代码源自《第一行代码》,在main_activity基础上,创建两活动(按钮),点击分别显示文字。
package com.example.activitylifecycletest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; public class MainActivity extends Activity { public static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreat"); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); Button startNormalActivity = (Button) findViewById (R.id.start_normal_activity); Button startDialogActivity = (Button) findViewById (R.id.start_dialog_activity); startNormalActivity.setOnClickListener(new OnClickListener() { @Override public void onClick(View v){ Intent intent = new Intent(MainActivity.this, NormalActivity.class); startActivity(intent); } }); startDialogActivity.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ Intent intent = new Intent(MainActivity.this, DialogActivity.class); startActivity(intent); } }); } @Override protected void onStart(){ super.onStart(); Log.d(TAG, "onStart"); } @Override protected void onResume(){ super.onResume(); Log.d(TAG, "onResume"); } @Override protected void onPause(){ super.onPause(); Log.d(TAG, "onPause"); } @Override protected void onStop(){ super.onStop(); Log.d(TAG, "onStop"); } @Override protected void onDestroy(){ super.onDestroy(); Log.d(TAG, "onDestory"); } @Override protected void onRestart(){ super.onRestart(); Log.d(TAG, "onRestart"); } }
这里引入Log来输出相应信息。注意,在Eclipse中,widows->show view->other->Android->LogCat位置打开Log控制台。这是Android调试相当有用的工具。
LogCat输出信息很多,为了方便查看,这里给LogCat加入过滤器,代码中我们命名TAG为“MainActivity”,故我们加入同名过滤器,by Log Tag为MainActivity即可。
一切就绪。运行程序,如图
LogCat中选中MainActivity过滤器可见,
点击Start NormalActivity按钮,如图所示,
LogCat输出如下,
此时NormalActivity已经把MainActivity完全遮挡住,故执行onPause()和onStop()方法。
按下返回键,回到MainActivity,此时输出,
之前MainActivity活动已进入停止状态,故此时执行onRestart()方法,又依次执行onStart()和onResume()方法以重启MainActivity活动。
点击Start DialogActivity按钮,如图所示,
LogCat输出如下,
因为此时DialogActivity并没有完全覆盖MainActivity活动,MainActivity只是暂时进入了暂停状态,并没有停止,故只执行了onPause()方法。
按下返回键,回到MainActivity,此时也只有onResume()方法得到执行,如图,
试想,手机锁屏了,MainActivity会处于什么状态呢?(其实是测试时手机自动锁屏发现的)锁屏,点亮,LogCat变化如下,
很显然,当我们锁屏时,MainActivity执行onStop()方法,点亮屏幕,依次执行onRestart(), onStart(), onResume()方法。
最后,按下返回键,退出MainActivity回到桌面,LogCat输出,
同理,我们可知,当用Home建回到桌面时,会执行onPause(), onStop()方法,
再次从最近应用或点击应用回到MainActivity时,会执行onRestart(), onStart(), onRusume()方法。
这win10自带输入法老跟chrome冲突导致后者,多亏了自动保存...
没有评论:
发表评论