前言
最近因为一个安卓项目开始学习Android开发,发现有好多东西记不住,java 基础也不是很牢固。笔记就写到这里面吧。
目录
一、活动的生命周期
onCreate() 用于完成活动的初始化操作,在第一次创建活动的时候使用。
onStart() 在活动由不可见变为可见的时候调用。
onResume() 在活动准备好和用户交互时调用,此时活动一定位于栈顶,并且处于运行状态。
onPause() 在系统准备去启动或者恢复另一个活动的时候调用。
onStop() 在活动完全不可见的时候调用。
onDestroy() 在活动被销毁时调用,之后活动的状态将变为销毁状态。
onRestart() 在活动由停止状态变为运行状态之前调用。
其中 onCreate() 和 onDestroy() 是一对,表示活动的创建和销毁;onStop() 和 onStart() 用在当前活动被完全遮挡,从 onStop() 到 onStart() 中间要经历一个 onRestart() ;onPause() 和 onResume() 表示活动没有被完全遮挡。
android:theme 属性是用于给当前活动指定主题,例如
android:theme="@android:style/Theme.Dialog"
这是让当前活动使用对话框式的主题
onSaveInstanceState() 可以保证在活动被回收之前一定会被调用。
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
String tempData = "Something you just typed";
outState.putString("data_key", tempData);
}
然后在onCreate()中添加如下代码
...
if (savedInstanceState != null) {
String tempData = savedInstanceState.getString("data_key");
Log.d(TAG, tempData);
}
...
二、活动的启动模式
活动的启动模式可以在AndroidManifest.xml中如下指定:
android:launchMode="xxxx"
启动模式有4种,standard, singleTop, singleTask, singleInstance
1.standard
系统默认的启动模式,每次启动都会入栈,创建一个新的实例。
2、singleTop
如果活动已经在栈顶了,就不会创建新的活动实例。否则创建一个新的活动实例。
2、singleTask
系统首先在返回栈中检查是否存在该活动实例,如果发现就使用,并把上面所有活动出栈。如果没有就创建一个新的活动实例。
2、singleInstance
会有一个单独的返回栈来处理该活动。
三、活动实践
getClass().getSimpleName()
可以获取底层类的名称,可以由此获得当前活动的名称。
一键退出
public class ActivityCollector {
public static List<Activity> activities=new ArrayList<>();
public static void addActivity(Activity activity) {
//向List中添加活动
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity:activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
所有活动都继承 BaseActivity 类,调用ActivityCollector.finishAll()来推出所有活动。