【知识点】android基础(一): Activity
2012-02-16 00:21
190 查看
一.Activity的生命周期
问题(1).后台activity被系统回收怎么办:在activity中重写onSaveInstanceState(BundleoutState)
当你的程序中某一个ActivityA在运行时中,主动或被动地运行另一个新的ActivityB
这个时候A会执行
publicvoidonSaveInstanceState(BundleoutState){
super.onSaveInstanceState(outState);
outState.putLong("id",1234567890);
}
B完成以后又会来找A,这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回
收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数
savedInstanceState,没被收回的就还是onResume就好了。
savedInstanceState是一个Bundle对象,你基本上可以把他理解为系统帮你维护的一个Map对象。在onCreate()里你可能会用到它,如果正常启动onCreate就不会有它,所以用的时候要判断一下是否为空。
if(savedInstanceState!=null){
longid=savedInstanceState.getLong("id");
}
二.Activity和Task
Android是通过一种Activity栈的方式来管理Activity的,一个Activity的实例的状态决定它在栈中的位置。处于前台的Activity总是在栈的顶端,当前台的Activity因为异常或其它原因被销毁时,处于栈第二层的Activity将被激活,上浮到栈顶。当新的Activity启动入栈时,原Activity会被压入到栈的第二层。一个Activity在栈中的位置变化反映了它在不同状态间的转换。Activity的状态与它在栈中的位置关系如下图所示:
如上所示,除了最顶层即处在Active状态的Activity外,其它的Activity都有可能在系统内存不足时被回收,一个Activity的实例越是处在栈的底层,它被系统回收的可能性越大。系统负责管理栈中Activity的实例,它根据Activity所处的状态来改变其在栈中的位置。
activity的启动方式:
见/article/6983842.html
activity横竖屏切换:
默认情况下横竖屏切换时,activity都会执行一遍生命周期.有两个属性:
activity的taskAffinity属性
/article/6983843.html
问题(1).后台activity被系统回收怎么办:在activity中重写onSaveInstanceState(BundleoutState)
当你的程序中某一个ActivityA在运行时中,主动或被动地运行另一个新的ActivityB
这个时候A会执行
B完成以后又会来找A,这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回
收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数
savedInstanceState,没被收回的就还是onResume就好了。
savedInstanceState是一个Bundle对象,你基本上可以把他理解为系统帮你维护的一个Map对象。在onCreate()里你可能会用到它,如果正常启动onCreate就不会有它,所以用的时候要判断一下是否为空。
二.Activity和Task
Android是通过一种Activity栈的方式来管理Activity的,一个Activity的实例的状态决定它在栈中的位置。处于前台的Activity总是在栈的顶端,当前台的Activity因为异常或其它原因被销毁时,处于栈第二层的Activity将被激活,上浮到栈顶。当新的Activity启动入栈时,原Activity会被压入到栈的第二层。一个Activity在栈中的位置变化反映了它在不同状态间的转换。Activity的状态与它在栈中的位置关系如下图所示:
如上所示,除了最顶层即处在Active状态的Activity外,其它的Activity都有可能在系统内存不足时被回收,一个Activity的实例越是处在栈的底层,它被系统回收的可能性越大。系统负责管理栈中Activity的实例,它根据Activity所处的状态来改变其在栈中的位置。
activity的启动方式:
见
activity横竖屏切换:
默认情况下横竖屏切换时,activity都会执行一遍生命周期.有两个属性:
android:screenOrientation=["unspecified"|"user"|"behind"|"landscape"|"portrait"|"sensor"|"nosensor"]
android:configChanges=["mcc","mnc","locale", "touchscreen","keyboard","keyboardHidden", "navigation","orientation","fontScale"]
当android:configChanges属性中有orientation是切换屏幕不会重新调用生命周期,而是调用
//需在AndroidManifest里注册Activity的configChanges属性 @Override publicvoidonConfigurationChanged(ConfigurationnewConfig){ super.onConfigurationChanged(newConfig); Log.d("isRun","onConfigurationChanged"); if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){ Log.d("isRun","当前屏幕切换成横屏显示"); }elseif(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){ Log.d("isRun","当前屏幕切换成竖屏显示"); } }
activity的taskAffinity属性
相关文章推荐
- Android基础知识整合篇——Activity知识点
- 《Android中高级工程师面试指南 — 基础知识 — Activity》
- android基础--Activity的生命周期
- android基础--tools:context=".MainActivity"作用
- Android-基础-activity
- Android基础 - 对话框和浮动Activity
- android基础内容介绍(XXXDrawable、Android动画、Android资源使用、Fragment与Activity)
- android基础知识问答总结(一)__关于Activity
- Android基础知识--1.认识Android中的Activity组件
- android初学者必须掌握的Activity状态的四大知识点(必读)
- Android基础动画,组合动画,帧动画,布局动画,Activity跳转动画
- Android基础总结(六)Activity
- 4.Android基础:四大组件之----->Activity
- 【Android基础】Activity的启动模式(android:launchMode)
- android基础之IntentFilter匹配规则与隐式启动Activity
- Android插件化基础(4),动态启动插件中的Activity
- [Android基础]Android之android:launchMode(Activity启动模式)
- 【Android 基础】利用Theme自定义Activity间的切换动画
- 【Android基础】Activity的启动模式(android:launchMode)
- Android零基础开发专题五:Activity、BroadcastReceiver、Service、Content Provider