安卓笔记 - HHDSG/Notepad GitHub Wiki
- onSaveInstanceState()回调方法,保证活动被回收前调用,携带一个Bundle类型的参数
- 4中standard、singleTop、sigleTask、singleInstance 通过属性android:launchMode指定
- standard模式: 系统不关注这个活动在返回栈中是否存在,每次启动都会创建一个新的实例
- singleTop模式: 这个活动在返回栈栈顶,不会再创建新的活动实例,如果不在栈顶,还会创建实例
- sigleTask模式: 系统首先检查返回栈中是否有该活动实例,如果有则直接使用,并把这个活动之上的活动全部出栈,如果没有则创建
- singleInstance: 启用一个新的返回栈来管理这个活动,确保单例
刚进入一个公司就正好一个新项目启动的概率并不高,阅读别人代码的时候有一个头疼的问题,就是当你需要在某个界面修改一些非常简单的东西时,却半天到不到这个界面对应的活动。
- 定义一个继承自AppCompatActivity的基类BaseActivity,基类的onCreate方法中打印当前类getClass().getSimpleName(),之后所有的Activity都继承这个基类,这样每进入一个活动界面就会打印该活动类名。
- 定义一个list管理所有活动,退出时finish这个list中的所有活动就可以直接退出应用,不用连续按多次后退;可以在销毁所有活动后再杀掉当前进程以保证程序完全退出。详情见2.6.2 android.os.Process.killProcess(android.os.Process.myPid())
- 封装创建Activity的代码 详见2.6.3
public static void actionStart(Context context, String data1, String data2);
SecondActivity.actionStart(FirstActivity.this, "data1","data2")
@+id/ 添加id; R.id.button;
所有控件都有android:layout_width android:layout_height match_parent wrap_content包裹内容
- 布局文件里文字小写,最终展示大写:android:textAllCaps="false"
- 提示性文字,输入时消失 android:hint="xxxx"
- 限制输入框中输入文字的行数,超过文字会向上滚动 android:maxLines="2"
editText = (EditText)findViewById(R.id.edit_text);
String text = editText.getText().toString();
- 图片通常放在以drawable开头的目录下
imageView.setImageResource(R.drawable.img_2);//可以动态修改图片
- 圆形进度条
- 所有安卓控件都有的可见属性:android:visubility visible(默认)、invisible、gone
- android:layout_gravity:用于指定控件在布局中的对齐方式
- android:gravity:用于指定文字在控件中的对齐方式
- android:layout_weight: 允许我们使用比例的方式指定控件大小
- 需要在项目的build.gradle中增加百分比布局依赖 ###自定义控件
- 引入布局 在布局xml中
<include layout="@layout/title"/>
- 添加自定义控件时,我们需要指定控件的完整类名,包名不能省略
- FragmentTransaction提供了一个addToBackStack()的方法,用于将一个事务添加到返回栈中
- 活动获取碎片实例:findFramentById()
- 碎片获取活动实例:getActivity()
- 服务启动后会一直保持运行状态,虽然每调用一次startService(),onStartCommand()就会执行一次,但是,每个服务都只会存在一个实例;只需要调用一次stopservice()或者stopSelf()就可以停止服务。
- 只要调用方和服务的连接没有断开,服务就会一直保持运行状态。
- 如果活动被销毁,一定要记得对服务进行解绑,不然后可能造成内存泄漏。
- IntentService集开启线程和自动停止于一身
- 使用intentd传递对象 1、serialization方式 2、Parcelable方式
- 定时任务 1、Alarm方式 安卓 set()、setExact() 2、Doze模式
- 只要是接口中只有一个待实现方法,都可以使用Lambda表达式来编写
- git fetch origin master 会将远程仓库的代码同步到本地,但不合并到任何分支,只是放到一个origin/master的分支上,可以通过diff命令查看远程仓库到底修改了什么 git diff origin/master. 之后再使用git merge origin/master将origin/master分支的修改合并到主干。而pull命令是将fetch和merge合并了
。