你的位置:首页 > 操作系统

[操作系统]活动的生命周期(三):实例上机课


    让我们再来回顾一下上节课中分享的7个生命周期;分别是:onCreate()、onSart()、onResme()、onPause()、onStop()、onDestroy()、onRestart();

         1.onCreate():初始化操作,所有活动都从这里启始。这里可以加载布局,或绑定事件等。

         2.onSart():这个是活动变为不可见时调用。

         3.onResme():这个方法一直处于栈的顶部,在和用户交互时调用,一直处于动行状态。

         4.onPause():系统准备去启动或者恢复另一个活动时调用。这个方法以通常用来释放内存或保存数据,一定要快,不然会影响到栈顶部的活动运行。

         5.onStop():这个方法是活动处于不可见时调用,它与onPause()的区别在于如果启动的活动是一个对话框式的,则onPause()会得到执行而onStop()的不会执行。

         6.onDestroy():这个是活动被回收时调用,调用后活动就会被回收。

         7.onRestart():重启处于停止状态的活动。

    下面让我们来创建一个实例来检验一下上节课所学到的知识,这次我们重新创建一个项目:activtityLifecysletest

         分别是dialog_Activity、NormalActivity、 MainActivity。其中dialog_Activity、NormalActivity分别有一个txtview控件,txt为活动的中文名。MainActivity中有两个按钮分别启动dialog_Activity、NormalActivity之用。在MainActivity注册两个活动的事件,然后调用几个回调函数来记录日志,让我们看清楚这7个方法的启动顺序。

      

public class MainActivity extends AppCompatActivity {  public static final String TAG = "MainActivity";  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    Log.d(TAG, "onCreate");    requestWindowFeature(Window.FEATURE_NO_TITLE);    setContentView(R.layout.activity_main);    Button startNormalActivty = (Button) findViewById(R.id.start_normal_activity);    Button startDialogActivty = (Button) findViewById(R.id.start_dialog_activity);    startNormalActivty.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View view) {        Intent intent = new Intent(MainActivity.this, NormalActivity.class);        startActivity(intent);      }    });    startDialogActivty.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View view) {        Intent intent = new Intent(MainActivity.this, dialog_Activity.class);        startActivity(intent);      }    });  }  @Override  protected void onStart() {    super.onStart();    Log.d(TAG, "onStart服务开始");  }  @Override  protected void onResume() {    super.onResume();    Log.d(TAG, "Resume活跃状态");  }  @Override  protected void onStop(){    super.onStop();    Log.d(TAG,"onStop活动停止") ;  }    @Override    protected void onDestroy(){      super.onDestroy();      Log.d(TAG,"onDestroy活动销毁");    }  @Override  protected void onRestart()  {     super.onRestart();    Log.d(TAG,"onRestart活动重启") ;  }}

   以上是MainActivity的代码。两个活动的这里就不写了,小Y的键盘真心不好用。快被虐哭了。直接上图吧。