Android Activity详解(一)

简介: Activity生命周期图在此之前,我们新建一个项目,代码非常简单,两个活动之间相互跳转(本来想做GIF图的,不会~~~~(>_: onCreate(创建)I/MainActivity--->: onStart(开启,逻辑层面的可见状态...
Activity生命周期图

在此之前,我们新建一个项目,代码非常简单,两个活动之间相互跳转(本来想做GIF图的,不会~~~~(>_<)~~~~)

主活动代码如下:

public class MainActivity extends AppCompatActivity {

private Button btn;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btn = (Button) findViewById(R.id.btn);

Log.i("MainActivity--->","onCreate");

btn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(MainActivity.this,SecondActivity.class));

}

});

}

@Override

protected void onStart() {

super.onStart();

Log.i("MainActivity--->","onStart");

}

@Override

protected void onResume() {

super.onResume();

Log.i("MainActivity--->","onResume");

}

@Override

protected void onPause() {

super.onPause();

Log.i("MainActivity--->","onPause");

}

@Override

protected void onStop() {

super.onStop();

Log.i("MainActivity--->","onStop");

}

@Override

protected void onDestroy() {

Log.i("MainActivity--->","onDestroy");

super.onDestroy();

}

@Override

protected void onRestart() {

super.onRestart();

Log.i("MainActivity--->","onRestart");

}

}

第二个页面代码相差无几,就补贴上了,节省版面。

1,点击应用,进入MainActivity

I/MainActivity--->: onCreate(创建)

I/MainActivity--->: onStart(开启,逻辑层面的可见状态)

I/MainActivity--->: onResume(页面运行中)

2,跳转到SecondActivity页面

I/MainActivity--->: onPause(MainActivity由onResume切换到暂停状态)

I/SecondActivity--->: onCreate(SecondActivity创建)

I/SecondActivity--->: onStart(SecondActivity开启,逻辑层面的可见状态)

I/SecondActivity--->: onResume(SecondActivity页面运行中)

I/MainActivity--->: onStop(上一个页面进入停止状态)

3,返回到MainActivity页面

I/SecondActivity--->: onPause(SecondActivity由onResume切换到暂停状态)

I/MainActivity--->: onRestart(方法在停止到运行状态之间调用)

I/MainActivity--->: onStart

I/MainActivity--->: onResume

I/SecondActivity--->: onStop(SecondActivity页面停止)

I/SecondActivity--->: onDestroy(SecondActivity页面被销毁)

SecondActivity页面停止容易理解,但是SecondActivity页面被销毁是怎么回事呢?为什么MainActivity跳转到另一个页面仅仅只进入了onStop()状态却没有被onDestroy(),在这我们需要说明一个安卓的回退栈的问题。


图画的不好看,见谅

当然,活动生命周期的改变并不仅仅由跳转页面所决定,比如手机的配置比较低,高优先级的系统级应用需要内存就会把应用杀死,那毫无疑问

活动将由onResume——>onPause——>onStop——>onDestroy

最后一个特殊情况再测试点击手机HOME键:

绝大多数的教程内均写的是点击HOME键任务进入后台,活动onStop()被保存,但是我在真机测试时并不是这样

I/MainActivity--->: onPause

I/MainActivity--->: onStop

I/MainActivity--->: onDestroy

我的设备是魅族MX4,安卓5.1的系统,个人猜想可能是安卓版本不同所导致的,还望高手不吝赐教,谢谢。

未完待续.......

相关文章
|
7天前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
52 6
|
8天前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
16 3
|
8天前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
11 3
|
4月前
|
Android开发
Android面试题之Activity的启动模式和flag
Android Activity的四种启动模式:standard(默认,每次启动创建新实例),singleTop(栈顶复用,不走onCreate,调用onNewIntent),singleTask(栈内唯一,清除上方Activity)和singleInstance(单独栈内唯一)。启动模式在AndroidManifest.xml中配置,Intent Flags如FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP可实现类似功能。了解这些对于处理Activity栈管理至关重要。
48 0
|
8天前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
9 0
|
2月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
43 4
|
6月前
|
XML Java Android开发
利用Bundle实现Android Activity间消息的传递
利用Bundle实现Android Activity间消息的传递
48 2
|
3月前
|
XML Android开发 数据格式
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。
55 2
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
|
2月前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
44 0
|
3月前
|
开发工具 Android开发
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
67 1