核心代码如下:
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应用开发中,理解并熟练掌握Activity的生命周期至关重要,因为它是构成应用程序核心功能的基石。本案例将深入探讨Android Activity的生命周期,并通过具体的图片示例进行解释。 首先,Activity生命周期是...
在Android应用开发中,Activity和Fragment是两个至关重要的组件,它们构成了用户界面的主要部分,并各自拥有独特的生命周期。本文将深入探讨Activity和Fragment的生命周期,帮助开发者更好地理解和掌握这两个组件的...
本文将详细探讨Android Activity的生命周期,以及如何通过源码分析和使用工具进行深入研究。 Activity的生命周期由一系列回调方法构成,这些方法在特定时刻被系统调用,指示Activity的状态变化。主要的生命周期回调...
通过研究该项目,你可以深入理解如何有效地在Android应用中集成RxJava并处理其生命周期。项目的源码会包含详细的注释和示例,帮助开发者更好地理解和应用这一最佳实践。通过这种方式,开发者可以编写更健壮、更易于...
android-lifecycle, Android Activity/fragment 生命周期的图表 完整的Android fragment & Activity 生命周期尝试了解各种各样的片段之后,我做了一些研究并将完整的Android Activity/fragment 生命周期结合起来。...
在Android应用开发中,程序生命周期的管理是至关重要的。Android系统的特性决定了程序的生命周期并非完全由应用程序自身控制,而是由操作系统根据用户交互和系统资源管理来决定。这可能导致在某些情况下,用户关闭...
了解Activity的生命周期是每个Android开发者必备的知识。Activity的生命周期由一系列的方法组成,这些方法会在特定时刻被系统调用,例如当Activity创建、启动、暂停、恢复或销毁时。通过分析Activity的源代码,我们...
在这种情况下,RxLife库可能还提供了其他高级功能,如支持组合多个生命周期源,或者与其他流行的生命周期库(如Android Architecture Components的Lifecycle)集成。 总之,理解并正确使用如RxLife这样的生命周期...
AndroidApplication是应用程序的入口点,它定义了应用程序的全局状态和生命周期。通过分析AndroidApplication,可以了解应用程序如何初始化、如何响应系统事件以及如何与其他组件交互。 ### **21. Android应用框架...
总结,Fragment是Android开发中的重要工具,理解其生命周期和使用技巧对于创建高效、可维护的应用至关重要。通过对源码的深入学习,开发者可以解决实际问题,提升应用性能。在实际项目中,灵活运用Fragment,可以...
系统运行时类库层包括多个子系统和Android运行时,其中Dalvik虚拟机负责对象生命周期、线程和安全管理。 Android的安全机制主要包括以下几个方面: 1. 权限管理:Android采用基于权限的访问控制模型,每个应用在...
Android的测试与普通的Java测试有所不同,因为它们涉及到Android组件的生命周期。我们可以使用`@UiThreadTest`和`@UiThreadTest`注解来分别在主线程和工作线程中执行测试。 六、AndroidTestCase与Espresso 虽然...
Android应用源码之(Activity生命周期).zip项目安卓应用源码下载Android应用源码之(Activity生命周期).zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
理解View的生命周期、绘制流程、测量与布局过程至关重要。开发者需要了解onMeasure()、onLayout()和onDraw()方法,以及如何通过自定义View来实现复杂的UI效果。 2. **ImageView研究文档**:ImageView用于显示图片,...
Android应用源码之8.Activity生命周期.zip项目安卓应用源码下载Android应用源码之8.Activity生命周期.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
这通常涉及到添加依赖,配置权限,以及初始化和管理Gecko的生命周期。例如,可能需要在AndroidManifest.xml中声明必要的权限,如互联网访问权限。 2. **创建WebView替代方案**:基于Gecko的浏览器需要创建一个新的...
用组件和Activity生命周期,对Android平台底层组件软件开发和应 用层软件开发方法进行了深入研究。在此基础上,运用这两种开发方 法分别设计实现了Android音视频编解码软件和Android录音机软 件。
总结来说,"Android的Fragment演示程序"涵盖了Fragment的基本概念、生命周期、与Activity的交互、数据传递以及用户事件处理等多个方面。通过详细研究FragmentDemo,开发者可以深化对Fragment的理解,提高构建高效、...
不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用,则与内存回收、内存泄漏这些问题有关,有必要加深研究和理解。 一、静态变量在类被...