安卓Activity基础(二)

*活动的生存期

onCreate() 活动第一次被创建的时候调用

onStart()活动由不可见到可见

onResume()活动准备好和用户进行交互,活动位于返回栈的栈顶

onPause()系统准备去启动或者恢复另一个活动时候

onStop()活动完全不可见时调用

onDestroy()活动由停止状态变为运行状态

onRestart()活动由停止状态变为运行状态

*体验活动的生命周期

创建新的项目-创建两个子活动,一个叫NormalActivity,一个叫DialogActivity  

NormalActivity中:

<TextView
        android:text="This is a normal activity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

DialogActivity中:(对话框)

<TextView
    android:text="This is a dialog activity"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

AndroidManifest中:(Dialog是对话框)

 <activity
            android:theme="@style/Theme.AppCompat.Dialog"
            android:name=".DialogActivity">
 </activity>

activity_main.xml中:


<Button
        android:id="@+id/button1"
        android:text="normal"
        android:layout_gravity="center"
        android:layout_width="120dp"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/button2"
        android:text="dialog"
        android:layout_gravity="center"
        android:layout_width="120dp"
        android:layout_height="wrap_content" />

MainActivity中:

public class MainActivity extends AppCompatActivity {
    public static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG,"onCreate");
        setContentView(R.layout.activity_main);
        Button button1 = findViewById(R.id.button2);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,DialogActivity.class);
                startActivity(intent);
            }
        });
        Button button = findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,NormalActivity.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,"onDestroy");
    }
    @Override
    protected void onRestart(){
        super.onRestart();
        Log.d(TAG,"onRestart");
    }

}

观察logcat中打印日志可以看到

Mainactivity第一次被创建时onCreate(),onStart(),onResume()方法;

点击第一个按钮时onPause(),onStop(),由此看出NormalActivity已经把MainActivity完全遮挡住

BACK键返回时会有onStart(),onResume();

再点击第二个按钮,会有onPause(),没有调用onStop是因为DialogActivity并没有完全遮挡住Mainactivity,MainActivity只是进入了暂停状态

Back键会执行onResume

最后在MainActivity中按back键会执行onPause(),onStop,onDestroy(),最终销毁MainActivity





猜你喜欢

转载自blog.csdn.net/qq873044564/article/details/80951526