Activity生死周期
1、Android提供了很多Activity的生命周期函数,比如 onCreate(),
onStart()、onResume()、onPause()、onStop()、onDestroy()等。
2、具体这六个方法的使用:
2.1 onCreate():创建Activity调用,用于Activity的初始化,在Activity生
命周期中只执行一次,适用于实例化对象
2.2 onStart():Activity:在屏幕上对用户可见时调用
2.3 onResume():Activity开始和用户交互的时候调用,这时该Activity是
在Activity栈的顶部
2.4 onPause():Activity被暂停时调用,被其他的Activity挡在后面,这里
可以做一些清理和保存工作
2.5 onStop():Activity被停止或者Activity变成不可见时调用
2.6 onDestroy():Activity被从内存中移除,一般发生在执行finish方法时
或者Android回收内存的时候
3、当从一个界面跳转到另一个界面时,如果先前的界面被完全覆盖,则调
用onPause(),和onStope()方法,如果没有被完全覆盖,则只调用
onPause()方法。
4、实现代码:
4.1第一个界面的代码:
package com.example.android_first;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity
{
//属性
private EditText username;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置显示的布局文件
//获取界面上的组件对象
Button login = (Button)findViewById(R.id.button_login);
username = (EditText)findViewById(R.id.edit_username);
//添加监听器
login.setOnClickListener(click_listener);
System.out.println("执行了第一个Activity的onCreate方法");
}
@Override
protected void onDestroy()
{
super.onDestroy();
System.out.println("执行了第一个Activity的onDestroy方法");
}
@Override
protected void onPause()
{
super.onPause();
System.out.println("执行了第一个Activity的onPause方法");
}
@Override
protected void onResume()
{
super.onResume();
System.out.println("执行了第一个Activity的onResume方法");
}
@Override
protected void onStart()
{
super.onStart();
System.out.println("执行了第一个Activity的onStart方法");
}
@Override
protected void onStop()
{
super.onStop();
System.out.println("执行了第一个Activity的onStop方法");
}
//创建动作事件监听器对象(匿名内部类)
OnClickListener click_listener = new OnClickListener()
{
//监听点击的方法
public void onClick(View v)
{
//验证
if(username.getText().toString().equals("zhangwei")){
//跳转到第二个界面
Intent intent = new Intent(MainActivity.this,dierge.class);//信
使
intent.putExtra("name",username.getText().toString());
startActivity(intent);
}else{
//提示信息
Toast.makeText(MainActivity.this,"登陆失败",3).show();
}
}
};
}
4.2第二个界面代码:
package com.example.android_first;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.widget.TextView;
/**
* 第二个界面
* @author 海斌
*
*/
public class dierge extends Activity{
MediaPlayer mp = new MediaPlayer();
/** Activity的入口 */
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
//获取intent
Intent intent = getIntent();
//取出保存在intent中的信息
String username = intent.getStringExtra("name");
//获取到布局文件中的文本组件
TextView show_username = (TextView)findViewById
(R.id.show_username);
//设置文本组件上的文本为第一个界面传过来的用户名
show_username.setText(username);
try {
mp.setDataSource("sdcard/baihu.mp3");
mp.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onStart() {
super.onStart();
//播放音乐
try {
mp.start();
}catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onPause() {
super.onPause();
//暂停音乐
mp.pause();
}
}
5、实验结果截图:
6.1启动第一个界面: