1. startActivity的工作过程
调用startActivity之后会传递到操作系统的ActivityManager中去,之后
ActivityManager会启动另一个activity。
2. 启动活动与传递数据
-
用startActivityForResult启动的Activity要用finishActivity(int requestCode)函数去销毁
-
startActivityForResult的用法
- 调用startActivityForResult(Intent intent,int requestCoed),其中Intent是启动第二个activity的意图,requestCoed是用来在onActivityResult()回调中区分是什么时候启动,以及启动的是哪个Activity的。
Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivityForResult(intent,1);
- 被启动的Activity可以调用setResult(int resultCode,Intent data)方法给启动它的Activity返回数据(包裹在Intent中)
Intent intent = new Intent(); intent.putExtra("data_return","Hello MainActivity"); setResult(RESULT_OK,intent);
- 启动Activity实现onActivityResult()回调,获取数据
@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传来的数据,只需要调用getIntent()方法获取到启动自己用到的Intent,然后调用Intent的getXXX()方法获取即可。
-
Bundle是什么?
Bundle是用来存储数据的一种集合,采用键值对的形式,通常用在Intent传递数据过程中,存储数据
网友评论