Android - activity基础

Android以栈的形式管理activity。

活动状态

1.运行状态:栈顶的activity
2.暂停状态:不是处于栈顶,但是仍然可见
3.停止状态:不处于栈顶,并完全不可见.在其他地方需要内存时,可能会被系统回收
4.销毁状态:从栈中移除,被系统回收,为手机提供更多内存

生存期

onCreate()。activity第一次被创建时调用
onStart()。activity由不可见变为可见时调用
onResume()。activity准备和用户交互时调用activity(运行状态)在栈顶
onPause()。android启动另一个activity时调用(执行速度要快,否则影响新的栈顶activity使用)
onStop()。activity完全不可见时调用。
onDestroy()。activity销毁前调用。
onRestart()。activity由停止状态变为运行状态前调用

活动被回收数据保存

onSaveInstanceState()。回调方法,activity回收前调用。用于保存临时数据

@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        super.onSaveInstanceState(outState, outPersistentState);
        String testString= "test";
        outState.putString("test_String",testString);
 }
获取临时数据
    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState != null) {
            String testString = savedInstanceState.getString("test_string");
            Log.v("FirstActivityTestString",testString);
        }
}
activity启动模式

standard : android默认启动模式,栈管理,每次都会创建新的实例
singleTop : 如果activity在栈顶,则不创建新的实例,并直接使用
singleTask : 如果栈里面有这个activity就不创建新的实例
singleInstance : 创建一个新的栈,并且将activity加入到这个新的栈里面

//栗子例子
        <activity android:name=".FirstActivity"
            android:launchMode="singleInstance">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容