`
寻梦者
  • 浏览: 637524 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android生命周期研究

阅读更多



核心代码如下:

 

 

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

 

ActivityLifeActivity中:

 

 

@Override
	protected void onResume() {
		Log.i(TAG, "=========onResume=========");
		super.onResume();
	}

	@Override
	protected void onStart() {
		Log.i(TAG, "=========onStart=========");
		super.onStart();
	}

	@Override
	protected void onStop() {
		Log.i(TAG, "=========onStop=========");
		super.onStop();
	}

	@Override
	protected void onDestroy() {
		Log.i(TAG, "=========onDestroy=========");
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		Log.i(TAG, "=========onPause=========");
		super.onPause();
	}

	@Override
	public void finish() {
		Log.i(TAG, "=========finish=========");
		super.finish();
	}

 

     ActivityLifeActivitySec:

 

     @Override

	protected void onResume() {
		Log.i(TAG, "=========onResume_sec=========");
		super.onResume();
	}

	@Override
	protected void onStart() {
		Log.i(TAG, "=========onStart_sec=========");
		super.onStart();
	}

	@Override
	protected void onStop() {
		Log.i(TAG, "=========onStop_sec=========");
		super.onStop();
	}

	@Override
	protected void onDestroy() {
		Log.i(TAG, "=========onDestroy_sec=========");
		super.onDestroy();
	}

	@Override
	protected void onPause() {
		Log.i(TAG, "=========onPause_sec=========");
		super.onPause();
	}

	@Override
	public void finish() {
		Log.i(TAG, "=========finish_sec=========");
		super.finish();
	}
 

最后结果:

 

 

由结果图:

 

    第一个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

 

 

 

  • 大小: 55.8 KB
  • 大小: 64.6 KB
分享到:
评论

相关推荐

    Android生命周期详细案例

    在Android应用开发中,理解并熟练掌握Activity的生命周期至关重要,因为它是构成应用程序核心功能的基石。本案例将深入探讨Android Activity的生命周期,并通过具体的图片示例进行解释。 首先,Activity生命周期是...

    Activity和Fragment生命周期研究

    在Android应用开发中,Activity和Fragment是两个至关重要的组件,它们构成了用户界面的主要部分,并各自拥有独特的生命周期。本文将深入探讨Activity和Fragment的生命周期,帮助开发者更好地理解和掌握这两个组件的...

    Android Activity 生命周期(lifecycle)的研究

    本文将详细探讨Android Activity的生命周期,以及如何通过源码分析和使用工具进行深入研究。 Activity的生命周期由一系列回调方法构成,这些方法在特定时刻被系统调用,指示Activity的状态变化。主要的生命周期回调...

    disposer,使用android的生命周期轻松处理rxjava流.zip

    通过研究该项目,你可以深入理解如何有效地在Android应用中集成RxJava并处理其生命周期。项目的源码会包含详细的注释和示例,帮助开发者更好地理解和应用这一最佳实践。通过这种方式,开发者可以编写更健壮、更易于...

    android-lifecycle, Android Activity/fragment 生命周期的图表.zip

    android-lifecycle, Android Activity/fragment 生命周期的图表 完整的Android fragment & Activity 生命周期尝试了解各种各样的片段之后,我做了一些研究并将完整的Android Activity/fragment 生命周期结合起来。...

    Android中人为改变程序生命周期的研究.pdf

    在Android应用开发中,程序生命周期的管理是至关重要的。Android系统的特性决定了程序的生命周期并非完全由应用程序自身控制,而是由操作系统根据用户交互和系统资源管理来决定。这可能导致在某些情况下,用户关闭...

    Activity生命周期源代码

    了解Activity的生命周期是每个Android开发者必备的知识。Activity的生命周期由一系列的方法组成,这些方法会在特定时刻被系统调用,例如当Activity创建、启动、暂停、恢复或销毁时。通过分析Activity的源代码,我们...

    一行代码解决RxJava 内存泄漏,一款轻量级别的RxJava生命周期管理库

    在这种情况下,RxLife库可能还提供了其他高级功能,如支持组合多个生命周期源,或者与其他流行的生命周期库(如Android Architecture Components的Lifecycle)集成。 总之,理解并正确使用如RxLife这样的生命周期...

    Android底层架构研究

    AndroidApplication是应用程序的入口点,它定义了应用程序的全局状态和生命周期。通过分析AndroidApplication,可以了解应用程序如何初始化、如何响应系统事件以及如何与其他组件交互。 ### **21. Android应用框架...

    Fragment的生命周期以及使用技巧源码

    总结,Fragment是Android开发中的重要工具,理解其生命周期和使用技巧对于创建高效、可维护的应用至关重要。通过对源码的深入学习,开发者可以解决实际问题,提升应用性能。在实际项目中,灵活运用Fragment,可以...

    Android操作系统安全机制研究.doc

    系统运行时类库层包括多个子系统和Android运行时,其中Dalvik虚拟机负责对象生命周期、线程和安全管理。 Android的安全机制主要包括以下几个方面: 1. 权限管理:Android采用基于权限的访问控制模型,每个应用在...

    android之Junit 深入研究代码

    Android的测试与普通的Java测试有所不同,因为它们涉及到Android组件的生命周期。我们可以使用`@UiThreadTest`和`@UiThreadTest`注解来分别在主线程和工作线程中执行测试。 六、AndroidTestCase与Espresso 虽然...

    Android应用源码之(Activity生命周期).zip项目安卓应用源码下载

    Android应用源码之(Activity生命周期).zip项目安卓应用源码下载Android应用源码之(Activity生命周期).zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    android 相关研究文档

    理解View的生命周期、绘制流程、测量与布局过程至关重要。开发者需要了解onMeasure()、onLayout()和onDraw()方法,以及如何通过自定义View来实现复杂的UI效果。 2. **ImageView研究文档**:ImageView用于显示图片,...

    Android应用源码之8.Activity生命周期.zip项目安卓应用源码下载

    Android应用源码之8.Activity生命周期.zip项目安卓应用源码下载Android应用源码之8.Activity生命周期.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    android基于gecko引擎的浏览器示例

    这通常涉及到添加依赖,配置权限,以及初始化和管理Gecko的生命周期。例如,可能需要在AndroidManifest.xml中声明必要的权限,如互联网访问权限。 2. **创建WebView替代方案**:基于Gecko的浏览器需要创建一个新的...

    基于Android平台软件开发方法的研究与应用

    用组件和Activity生命周期,对Android平台底层组件软件开发和应 用层软件开发方法进行了深入研究。在此基础上,运用这两种开发方 法分别设计实现了Android音视频编解码软件和Android录音机软 件。

    Android的Fragment演示程序

    总结来说,"Android的Fragment演示程序"涵盖了Fragment的基本概念、生命周期、与Activity的交互、数据传递以及用户事件处理等多个方面。通过详细研究FragmentDemo,开发者可以深化对Fragment的理解,提高构建高效、...

    Android静态变量的生命周期 简单介绍

    不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用,则与内存回收、内存泄漏这些问题有关,有必要加深研究和理解。 一、静态变量在类被...

Global site tag (gtag.js) - Google Analytics