
Activity生命周期.png
單個Activity的生命周期
創(chuàng)建一個Activity時,依次調(diào)用onCreate() onStart() onResume(),此時處于可見狀態(tài),當(dāng)讓app處于后臺則會依次調(diào)用onPause() onStop() onDestroy(),
onRestart()在Activity被銷毀之前,系統(tǒng)調(diào)用該回調(diào),從而讓Activity回到可見狀態(tài)。
多個Activity的生命周期交互
讓當(dāng)前Activity執(zhí)行onPause()之后,才會打開下一個Activity。
Activity生命周期交互設(shè)計思想三問
- 為什么先暫停當(dāng)前顯示的Activity?
- 為什么先執(zhí)行要打開的Activity的
onCreate()onStart()onResume()? - 在執(zhí)行新的Activity時,為什么不執(zhí)行當(dāng)前Activity的
onPause()onStop()?
Activity的橫豎屏切換
生命中后期應(yīng)用場景
Activity啟動的兩種方式
- 直接啟動
- 匿名啟動
啟動系統(tǒng)常見的Activity
- 啟動瀏覽器
- 啟動相冊
- 發(fā)送短信
- 啟動電話界面
Activity數(shù)據(jù)交換
- Bunndler傳遞數(shù)據(jù)
intent.putExtra("name","nate");
--->
intent.getStringExtra("name");
bundle.putString("name","nate");
intent.putExtras(bundle);
---->
intent.getStringExtra("name");
//Person 對象傳遞
bundle.putSerializable("person",person);
intent.putExtras(bundle);
----->
Person person = (Person)intent.getSerializableExtra("person");
//Bitmap傳遞
Bitmap bitmap = BitmapFactory.decodeResource(getResources().R.drawable.ic_launcher);
bundle.putParcelable("bitmap",bitmap);
bundle.putExtras(bundle);
----->
Bitmap bitmap = intent.gettParcelable("bitmap");
- 傳遞大數(shù)據(jù)異常
TransationTooLargeException
Activity中的任務(wù)棧
- Task
- Back Stack
通過adb命令查看Activity任務(wù)
Activity啟動模式(launchMode)
standard
singleTop
singleTask
singleInstance