android生命周期研究
核心代码如下:

 Intent intent = new Intent(ActivityLifeActivity.this, ActivityLifeActivitySec.class);startActivity(intent);ActivityLifeActivity.this.finish();

ActivityLifeActivity中:

@Overrideprotected void onResume() {Log.i(TAG, "=========onResume=========");super.onResume();}@Overrideprotected void onStart() {Log.i(TAG, "=========onStart=========");super.onStart();}@Overrideprotected void onStop() {Log.i(TAG, "=========onStop=========");super.onStop();}@Overrideprotected void onDestroy() {Log.i(TAG, "=========onDestroy=========");super.onDestroy();}@Overrideprotected void onPause() {Log.i(TAG, "=========onPause=========");super.onPause();}@Overridepublic void finish() {Log.i(TAG, "=========finish=========");super.finish();}

ActivityLifeActivitySec:

@Override

protected void onResume() {Log.i(TAG, "=========onResume_sec=========");super.onResume();}@Overrideprotected void onStart() {Log.i(TAG, "=========onStart_sec=========");super.onStart();}@Overrideprotected void onStop() {Log.i(TAG, "=========onStop_sec=========");super.onStop();}@Overrideprotected void onDestroy() {Log.i(TAG, "=========onDestroy_sec=========");super.onDestroy();}@Overrideprotected void onPause() {Log.i(TAG, "=========onPause_sec=========");super.onPause();}@Overridepublic void finish() {Log.i(TAG, "=========finish_sec=========");super.finish();}

最后结果:

android生命周期研究

由结果图:

第一个activity在finish()时候没有马上调用onStop()跟onDestory()方法,而是先创建第二activity,等第二个activity创建成功后才销毁先前的activity

当没调用finish()方法的时候他只会调用onStop()方法,没有执行destory()方法

Savingactivity state(保存活动状态)

简单的说,当一个activity 被暂停或者被停止的时候,那么这个activity的状态就被保留了。

这是因为 activity对象仍然被保留在内存中。

这里要注意的是,如果系统为了回收内存而destroy一个 activity的话,activity对象的信息将不会被保留。因此,应该保证这个activity在系统重新创建它之前,可以回调一个方法来保存重要信息。

这个回调方法(callback method)是 onSaveInstanceState().

过程是:

系统在这个activity被destroy之前调用onSaveInstanceState() 并且把这个activity传给Bundle对象。Bundle是用来保存状态信息的地方,使用的方法是名 值对应,如putSting()。

如果系统杀死了这个activity的进程并且用户又回来浏览这个activity,系统就将Bundle传给onCreate(),这样你可以重新存储这个activity的状态。

如果没有状态信息保存,那个Bundle就传null给onCreate().

注意:

onSaveInstanceState()是在activity被destroy之前被调用;

onSaveInstanceState()是在onStop()之前被调用;

onSaveInstanceState()也可能在onPause()之前被调用;

即使你不实现onSaveInstanceState()方法,activity也会默认实现它。而且,每个view都会将onSaveInstanceState()方法作为默认实现。几乎说有的widget也都实现这个方法。

例如,CheckBox 保存它是否被勾选的状态。

我们要做的就是提供出widget的唯一标识ID(通过android:id属性),如果widget没有ID,那么它的状态也不能被保存。

注意:

因为无法保证onSaveInstanceState()方法一定会被调用,

不要使用onSaveInstanceState()保存永久数据;

永久数据保存应该放到onPause()中进行。

按钮事件对activity生命周期的影响

(1)按home键盘

onPause----> onStop

activity进入不可见状态

进入主键盘重新启动应用,执行onStart---->onResume

假如,activity是singletask类型的,则调用的方法为: onNewIntent()--->onStart()---> onResume()

(2) 按back键

内部调用的方法是:

onBackPressed(),实质就是执行finish()方法

finish ----> onPause ---> onstop ----> onDestory

更多相关文章

  1. Android WebView 使用方法,可以解决web视频播放层级问题。
  2. Android 实现分享功能的方法 分类: Android ...
  3. android 堆栈调试方法
  4. android WIFi 连接状态之DetailedState
  5. android获取短信方法1
  6. android分页查询获取系统联系人信息
  7. Android的系统通知栏小例子
  8. android 电池状态获取
  9. Android获取系统中的其他应用信息

随机推荐

  1. ANDROID笔记:自定义CheckBox样式
  2. Android NDK开发入门
  3. 初学Android,使用ContentProvider管理多
  4. android 音乐播放器添加音乐分享功能
  5. android:text文字添加阴影效果
  6. Android WebView点击EditText时整体被拉
  7. android 把虚拟键盘的回车改为搜索功能(亲
  8. Android tickplusdrawable(TickPlusDrawab
  9. 《android recyclerview的简单使用》
  10. android 屏幕方向随传感器变化,并带有切换