若希望Activity以对话框形式展现,只需要在AndroidManifest.xml文件里注册该activity的时候对其加一个主题属性:
android:theme="@android:style/Theme.Dialog"
小技巧:可以在自定义的BaseActivity中的onCreate()中调用获取类名方法 getClass().getSimpleName(),可用于定位当前界面属于哪一activity
1.一个activity可能的四种状态:
运行状态(位于栈顶)、暂停状态(可见但并不位于栈顶)、停止状态(不可见)、销毁状态
2.onCreate()、onStart()、onResume()(进入运行状态)、onPause()(进入暂停状态)、onStop()(进入停止状态)、onDestroy()
3.如果一个CActivity在暂停状态(主线程在当前CActivity执行onPause()后跳到另一个DActivity)下被系统回收了怎么办?【情景:当你在一个app填写了一些信息后,此时需要跳转到另一个界面查看某一信息,完后你再回来原界面时,发现原来填写的信息已经被情况,这时你肯定只想说wc,所以这样对用户体验很不好】
当用户按back键想回到原CActivity时,因CActivity被系统回收,此时系统会new出一个新的CActivity出来,但此时原CActivity数据丢失了,若想防止数据丢失,可在CActivity中调用onSaveInstanceState()回调方法
CActivity:
protected void onSaveInstanceState(Bundle outState){
super.onSaveInstanceState(outState);
String data = editText1;
outState.putString("editText1",editText1);
}
再重写CActivity的onCreate()方法:
protected void onSaveInstanceState(Bundle saveInstanceState){
super.onCreate(saveInstanceState);
if(saveInstanceState!=null){
String editText1 = saveInstanceState.getString("editText1");
}
}
4.activity的启动模式(AndroidManifest.xml配置 android:lanchMode=XXX):
standard(默认)(当CActivity在栈顶的时候可以重新new出一个CActivity)
singleTop(当CActivity在栈顶的时候不会重新new出一个CActivity)
singleTask(不管CActivity在【返回栈】里哪一位置,都不会重新new出一个CActivity)
singleInstance(CActivity在【返回栈A】,会重新new出一个CActivity在【返回栈B】里)