代码源自《第一行代码》,在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冲突导致后者,多亏了自动保存...





没有评论:
发表评论