Android Activity生命周期以及LoCat的使用
Android Activity生命周期以及LoCat的使用
Activity主要有三个状态:
当在屏幕前台时(位于当前任务堆栈的顶部),它是活跃或运行的状态。它就是相应用户操作的Activity。
当它失去焦点但仍然对用户可见时,它处于暂停状态。即:在它之上有另外一个Activity。这个Activity也许是透明的,或者未能完全遮蔽全屏,所以被暂停的Activity仍对用户可见。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并连接至窗口管理器),但当系统处于极低内存的情况下,仍然可以杀死这个Activity。
如果它完全被另一个Activity覆盖时,它处于停止状态。它仍然保留所有的状态和成员信息。然而它不再为用户可见,所以它的窗口将被隐藏,如果其他地方需要内存,则系统经常会杀死这个Activity。
API里Activity的生命周期图:
Activity继承了ApplicationContext这个类,Activity的生命周期由下面七个方法实现:
在学习Activity的生命周期时,为了更好理解Activity的生命周期,我基本重写了这七个方法,并用 Android.util.log这个类的静态方法打印出来, 这个类相当的简单易用,因为它提供的全是一些静态方法:
- Log.v(String tag, String msg); //VERBOSE
- Log.d(String tag, String msg); //DEBUG
- Log.i(String tag, String msg); //INFO
- Log.w(String tag, String msg); //WARN
- Log.e(String tag, String msg); //ERROR
下面是重写后的两个Activity的代码清单:FirstActivity
- package blog.activity.demo;
- import android.app.Activity;
- import android.content.Intent;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class FirstActivity extends Activity {
- private final static String TAG = "FIRSTACITVITY";
- private Button myButton;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- Log.v(TAG, "FirstAcvity ---> onCreate");
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- myButton = (Button)findViewById(R.id.myButton);
- myButton.setText("启动第二个Activity");
- myButton.setOnClickListener(new ButtonOnClickListener());
- }
- @Override
- protected void onDestroy() {
- // TODO Auto-generated method stub
- Log.v(TAG, "FirstAcvity --->onDestory");
- super.onDestroy();
- }
- @Override
- protected void onPause() {
- // TODO Auto-generated method stub\
- Log.v(TAG, "FirstAcvity --->onPause");
- super.onPause();
- }
- @Override
- protected void onRestart() {
- // TODO Auto-generated method stub
- Log.v(TAG, "FirstAcvity --->onRestart");
- super.onRestart();
- }
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- Log.v(TAG, "FirstAcvity --->onResume");
- super.onResume();
- }
- @Override
- protected void onStart() {
- // TODO Auto-generated method stub
- Log.v(TAG, "FirstAcvity --->onStart");
- super.onStart();
- }
- @Override
- protected void onStop() {
- // TODO Auto-generated method stub
- Log.v(TAG, "FirstAcvity --->onStop");
- super.onStop();
- }
- class ButtonOnClickListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.setClass(FirstActivity.this,SecondActivity.class);
- FirstActivity.this.startActivity(intent);
- }
- }
- }
|
评论暂时关闭