1. startActivity的工作過程
調(diào)用startActivity之后會傳遞到操作系統(tǒng)的ActivityManager中去鲁沥,之后
ActivityManager會啟動另一個activity。
2. 啟動活動與傳遞數(shù)據(jù)
用startActivityForResult啟動的Activity要用finishActivity(int requestCode)函數(shù)去銷毀
-
startActivityForResult的用法
- 調(diào)用startActivityForResult(Intent intent,int requestCoed),其中Intent是啟動第二個activity的意圖查描,requestCoed是用來在onActivityResult()回調(diào)中區(qū)分是什么時候啟動坐桩,以及啟動的是哪個Activity的钝的。
Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivityForResult(intent,1);
- 被啟動的Activity可以調(diào)用setResult(int resultCode,Intent data)方法給啟動它的Activity返回數(shù)據(jù)(包裹在Intent中)
Intent intent = new Intent(); intent.putExtra("data_return","Hello MainActivity"); setResult(RESULT_OK,intent);
- 啟動Activity實現(xiàn)onActivityResult()回調(diào)琳状,獲取數(shù)據(jù)
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ case 1: if(resultCode == RESULT_OK){ Log.i(TAG, "onActivityResult: result:"+data.getStringExtra("data_return")); } } }
被啟動的Activity獲取啟動它的Activity傳來的數(shù)據(jù)磕瓷,只需要調(diào)用getIntent()方法獲取到啟動自己用到的Intent,然后調(diào)用Intent的getXXX()方法獲取即可。
Bundle是什么困食?
Bundle是用來存儲數(shù)據(jù)的一種集合边翁,采用鍵值對的形式,通常用在Intent傳遞數(shù)據(jù)過程中陷舅,存儲數(shù)據(jù)