当前位置: 代码迷 >> Android >> Android的 Activity存亡周期
  详细解决方案

Android的 Activity存亡周期

热度:38   发布时间:2016-04-28 07:17:48.0
Android的 Activity生死周期

???????????????? 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方法");??
???????? }??
[email protected]
???????? protected void onDestroy()

?????? ?{??
?????????????? super.onDestroy();??
?????????????? System.out.println("执行了第一个Activity的onDestroy方法");?
?????????}?
???????? @Override?
???????? protected void onPause()

??????? {??
?????????????? super.onPause();??
????????????? ?System.out.println("执行了第一个Activity的onPause方法");?
??????? ?}?
??????? [email protected]
???????? protected void onResume()

?????? ?{??
?????????????? super.onResume();??
?????????????? System.out.println("执行了第一个Activity的onResume方法");?
?????????}?
??????? [email protected]
?????????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、运行结果显示:

????? 6.1启动第一个界面:

???????
???????
?????? 6.2从第一个界面跳转到第二个界面

????????
????????
??????? 6.3完全退出时:
??
????????
?

  相关解决方案