huhx的android封神之路-------->Activity的生命周期

来源:互联网 发布:优化蜜蜡是假的吗 编辑:程序博客网 时间:2024/05/17 08:22

创建一个测试Activity生命周期的项目:

目录结构如下:

源代码:

1.MainActivity.java:

package com.example.linux.activitylifetest;import android.content.Intent;import android.os.PersistableBundle;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity {    private final String TAG = "MainActivity";    private Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        Log.i(TAG, "on main create");        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.button1);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent();                intent.setClass(MainActivity.this, SecondActivity.class);                startActivity(intent);            }        });    }    @Override    protected void onDestroy() {        Log.i(TAG, "on main destory");        super.onDestroy();    }    @Override    protected void onStart() {        Log.i(TAG, "on main start");        super.onStart();    }    @Override    protected void onRestart() {        Log.i(TAG, "on main restart");        super.onRestart();    }    @Override    protected void onResume() {        Log.i(TAG, "on main resume");        super.onResume();    }    @Override    protected void onStop() {        Log.i(TAG, "on main stop");        super.onStop();    }    @Override    protected void onPause() {        Log.i(TAG, "on main pause");        super.onPause();    }    @Override    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {        Log.i(TAG, "on main saveinstance");        super.onSaveInstanceState(outState, outPersistentState);    }    public void finish(View view) {        this.finish();    }}

2. SecondActivity.java:

package com.example.linux.activitylifetest;import android.os.PersistableBundle;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;public class SecondActivity extends AppCompatActivity {    private final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        Log.i(TAG, "on second create");        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);    }    @Override    protected void onDestroy() {        Log.i(TAG, "on second destory");        super.onDestroy();    }    @Override    protected void onStart() {        Log.i(TAG, "on second start");        super.onStart();    }    @Override    protected void onRestart() {        Log.i(TAG, "on second restart");        super.onRestart();    }    @Override    protected void onResume() {        Log.i(TAG, "on second resume");        super.onResume();    }    @Override    protected void onStop() {        Log.i(TAG, "on second stop");        super.onStop();    }    @Override    protected void onPause() {        Log.i(TAG, "on second pause");        super.onPause();    }    @Override    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {        Log.i(TAG, "on second saveinstance");        super.onSaveInstanceState(outState, outPersistentState);    }}
3. 布局文件:activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.linux.activitylifetest.MainActivity">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!" />    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button" />    <Button        android:id="@+id/button2"        android:onClick="finish"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Finish" /></LinearLayout>
4. 布局文件:activity_second.xml文件没有增加什么:

分析结果:

1. 在程序第一次安装时:打印结果如下:

on main create
on main start
on main resume

2. 点击返回:

on main pause
on main stop
on main destory

3. 点击按钮时intent到second的活动中去:

on main pause
on second create
on second start
on second resume

4. 再次点击返回

on second pause
on main restart
on main start
on main resume
on second stop
on second destory

5, 最后点击返回:

on main pause
on main stop
on main destory

PS:当再次重复试验时,结果不是以上重复的样子。这结果可能是由活动的模式改变的,具体的还在学习当中。


2 0
原创粉丝点击