Activity

1、activity的自身功能声明:常见的MAIN及LAUNCHER表示该activity拥有被桌面app启动的功能。

<intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>  

2、启动其它activity:

  显式启动:同一个app中,指定类名。

例如:Intent intent =newIntent(this,SignInActivity.class);
startActivity(intent);

  隐式启动:可跨app,指定action或者category、data等。

Intent intent =newIntent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);
startActivity(intent);

3、启动其它activity获取结果: startActivityForResult()

例如:获取选中通讯录Intent intent =new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);

  处理activity返回结果:requestCode用于区分启动的activity,resultCode需要了解启动的activity的定义规范。

@Override protected void onActivityResult(int requestCode,int resultCode,Intent data){ if(resultCode ==Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST){

4、生命周期:在paused、stopped状态时进程可被kill,应在onPause()、onResume()保存、恢复重要数据,kill之后从onCreate()开始,onStop()之后先onRestart()再onStart(),其它正常对应create--destroy, start--stop, resume--pause。

  resumed:可见,有用户焦点--running

  paused:可见,无焦点

  stopped:不可见

  onSaveInstanceState()应只保存ui临时状态,在layout中给每个widget赋予唯一id。

5、A启动B:A->onPause(), B->onCreate(), B->onStart(), B->onResume(), 如果A不可见则A->onStop();

 
原文地址:https://www.cnblogs.com/toven/p/2607012.html