启动模式 中singleTask 的理解,举个例子,2个activity firstActivity second Activity, 点一个切换到第二个,再点第一个切换到第一个,这个时候 firstActivity 是reStart, 而不创建,而secondActivity会销毁,因为它在栈的最上边,firstActivity把它替换掉,所以就onDestroy;
只要不再显示就会执行onStop(),没有销毁就会经历onRestart(),onStart()重新变得可见。
比较好的演示生命周期的例子,可以很明显的看到各个活动的创建,停止,销毁,重新启动整个过程,只用一个过滤器就能区分。
package com.example.activitytest;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Log.d("BaseActivity","onCreate"+getClass().getSimpleName());
ActivityCollector.addActivity(this);//static 方法不用new 来实例化对象
}
@Override
protected void onDestroy(){
super.onDestroy();
ActivityCollector.removeActivity(this);
Log.d("BaseActivity","onDestroy"+getClass().getSimpleName());//显示那个活动呗销魂
}
@Override
protected void onStop(){
super.onStop();
Log.d("BaseActivity","onStop"+getClass().getSimpleName());
}
@Override
protected void onRestart(){
super.onRestart();
Log.d("BaseActivity","onRestart"+getClass().getSimpleName());
}
@Override
protected void onStart(){
super.onStart();
Log.d("BaseActivity","onStart"+getClass().getSimpleName());
}
}
让其他Activity 都继承BaseActivity,因为其他的Activity都会super.onCreate(),super.onStop(),super.onDestroy(),就会先调用BaseActivity中的相关内容;几个小技巧:Log.d("BaseActivity","onCreate"+getClass().getSimpleName()); 得到类名;
Log.d("SecondActivity","Task ID is"+getTaskId());//得到任务ID
《第一行代码》2章 Activity生命周期理解
原创
©著作权归作者所有:来自51CTO博客作者清水禅石的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Activity初级:Activity生命周期、service生命周期
Activity生命周期、service生命周期
服务 Activity生命周期 service生命周期