Activity的状态、周期、启动模式


若希望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】里)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值