Activity生命周期
分析:
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
启动Activity
1、直接启动activity
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondApplication.class);
startActivity(intent);//直接启动activity
2、带有返回值的启动方式
第一个界面调用startActivityForResult方法
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondApplication.class);
startActivityForResult(intent, 0x99);
}
});
第二个界面调用getIntent得到启动的Intent;关闭前封装数据;设置ReSultCode, setResult(RESULT_OK,intent);关闭第二个界面。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
final EditText text = (EditText)findViewById(R.id.edit);
Button button =(Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
intent.putExtra("databack",text.getText().toString());//封装数据
setResult(RESULT_OK,intent);//设置resultcode
finish();//关闭第二个界面
}
});
}
第一个界面准备接收数据,重写onActivityResult方法;判断resultcode,从data中读取数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 0x99:
if (resultCode == RESULT_OK) {
String value = data.getStringExtra("databack");
textView.setText(value);
}
break;
default:
break;
}
activity应用
1、新建class SecondApplication继承Activity;
2、重写onCreate方法,setContenView;
public class SecondApplication extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
final EditText text = (EditText)findViewById(R.id.edit);
Button button =(Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getIntent();
intent.putExtra("databack",text.getText().toString());
setResult(RESULT_OK,intent);
finish();
}
});
}
}
3、在res文件夹下的layout文件夹下新建一个layout resource file,在其中设置按钮和EditText;
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入内容"
android:id="@+id/edit"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发送"
android:id="@+id/button_send"/>
</LinearLayout>
4、在AndroidMainfest.xml文件上注册 ;
5、在MainActivity的layout上添加按钮;
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="进入第二个界面"
android:id="@+id/button_back"
/>
6、在MainActivity代码的onCreate方法中 Button button = (Button) findViewById(R.id.button_back);
7、给button设置点击事件 button.setOnClickListener(new View.OnClickListener();
Button button = (Button) findViewById(R.id.button_back);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, SecondApplication.class);
startActivity(intent);//直接启动activity
}
});
8、新建Intent Intent intent = new Intent(MainActivity.this, SecondApplication.class);
9、调用startActivity();