Activity:活动,Android基本组件之一,是视图的逻辑实现,每一个活动都必须在AndroidManifest.xml文件中注册。
生命周期:活动被启动后会进入返回栈,并位于栈顶,返回栈遵循“后进先出”规则,当用户按下back键或者调用finish( )方法时,活动被出栈。
运行状态——活动位于栈顶
暂停状态——活动虽不在栈顶,但仍然可见
停止状态——活动既不在栈顶,也不可见
销毁状态——活动被出栈
生命周期中的七个回调方法:
protected void onCreate(Bundle savedInstanceState);活动被创建时自动调用,之后该活动被入栈
protected void onStart( );活动由不可见变为可见时调用
protected void onResume( );活动准备与用户进行交互时调用,之后活动位于栈顶
protected void onPause( );当启动另一个活动时,本活动会调用此方法
protected void onStop( );当启动另一个活动时,若本活动变为不可见时,会自动调用此方法
protected void onDestroy( );活动被销毁出栈前调用
protected void onRestart( );活动由不可见变为可见时调用,之后会依次调用onStart( )、onResume( )方法
启动活动:startActivity(Intent intent); startActivityForResult(Intent intent,int requestCode)
销毁活动:finish( )
活动间传递数据:
活动A启动活动B,并向B传递数据,如下所示
public class ActivityA extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
Intent intent=new Intent(ActivityA.this,ActivityB.class);
intent.putExtra("data","what");
startActivity(intent);
}
}
public class ActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
Intent intent=getIntent();
String data=intent.getStringExtra("data");
}
}
public class ActivityA extends Activity {
private final int REQUEST_CODE=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
Intent intent=new Intent(ActivityA.this,ActivityB.class);
startActivityForResult(intent,REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch(requestCode){
case REQUEST_CODE:
if(resultCode==RESULT_OK){
String string=data.getStringExtra("output");
}
break;
default:
break;
}
}
}
public class ActivityB extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
Intent intent = new Intent();
intent.putExtra("output", "what");
setResult(RESULT_OK,intent);
finish();
}
}