Activity&Intent

来源:互联网 发布:历史正文 知乎 编辑:程序博客网 时间:2024/05/21 17:45

1、Activity生命周期的回调函数
onCreate:第一次启动
onDestroy:销毁
onStart:进入可见状态
onStop:进入不可见状态
onRestart:没有被销毁的act,重新变为可见状态
onResume:获得焦点时
onPause:启动另一个act,当前act就被暂停


2、Activity生命周期执行顺序
创建act1:
onCreate->onStart->onResume
退出act1:
onPause->onStop->onDestroy
act1跳转到act2:
onPause1->onCreate2->onStart2->onResume2->onStop1
act2返回act1:
onPause2->onRestart1->onStart1->onResume1->onStop2->onDestroy2


3、Intent操作

拨打电话:

Uri uri = Uri.parse("tel:10000");

Intent intent = new Intent();

intent.setAction(Intent.ACTION_CALL)  // 电话INTENT是系统自带的。
intent.setData(uri) // uri提供电话号码
startActivity(intent) // 启动act
<uses-permission android:name="android.permission.CALL_PHONE"/> //  manifest中添加拨号权限


4、Intent跳转
显示:
Intent intent=new Intent(act1,act2);
隐式:
类似于拨打电话,实现一个新的act,这个act要在manifest中注册,然后设置act的intent-filter
<intent-filter>
 <action android:name="com.rc.android_intent.myAct"/>
 <category android:name="android.rc.category.DEFAULT"/>
</intent-filter>
然后直接setAction即可
intent.setAction("com.rc.android_intent.myAct")


5、Intent跳转时传递参数
act1:
可以直接传值 - intent.putExtra("name","abc");
也可以传bundle - Bundle bundle=new Bundle(); bundle.putString("name","abc"); intent.putExtras(bundle);
act2:
Intent intent=getIntent();
intent.getStringExtra("name"); 或 intent.getExtras().getString("name");


6、Intent返回时回传参数
act1:
跳转方法要使用 startActivityForResult(intent, 1) // 1是requestCode
重写一个方法 onActivityResult, 这是act返回的回调函数
act2:
setResult(2, intent); // 2是resultCode
finish();

requestCode和resultCode:
act1可能启动了多个actx,所以有多个回传参数,只能通过requestCode来区分
act1-act2  startActivityForResult(intent, 1)
act1-act3  startActivityForResult(intent, 2)
act1-act4  startActivityForResult(intent, 3)
actx可能有多处finish,所以也有多个回传参数,只能通过resultCode来区分
setResult(1,intent)
setResult(2,intent)
setResult(3,intent)
在actx返回之后,onActivityResult中根据requestCode和resultCode来做不同的处理。
0 0
原创粉丝点击