生命周期示意圖
1.當(dāng)?shù)谝淮握{(diào)用一個(gè)Activity就會(huì)執(zhí)行onCreate方法
2.當(dāng)Activity處于可見狀態(tài)的時(shí)候就會(huì)調(diào)用onStart方法
3.當(dāng)Activity可以得到用戶焦點(diǎn)的時(shí)候就會(huì)調(diào)用onResume方法
4.當(dāng)Activity沒有被銷毀的時(shí)候重新調(diào)用這個(gè)Activity就會(huì)調(diào)用onRestart方法
5.當(dāng)Activity被遮擋住的時(shí)候就會(huì)調(diào)用onPause方法
6.當(dāng)Activity處于不可見狀態(tài)的時(shí)候就會(huì)調(diào)用onStop方法
7.當(dāng)Activity被銷毀時(shí)會(huì)調(diào)用onDestory方法
例如:
我們新建一個(gè)主活動(dòng)阱表,一個(gè)普通活動(dòng)怯疤,一個(gè)對(duì)話框活動(dòng)
創(chuàng)建活動(dòng)
在主活動(dòng)的視圖上創(chuàng)建2個(gè)按鈕(MainActivity.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.javascript.androidlifecircletest.MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/normal_"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="normal view"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="dialog view"
android:id="@+id/dialog_"/>
</LinearLayout>
MainActivity綁定按鈕决帖,并以現(xiàn)顯式的意圖切換到活動(dòng)
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button but1 = (Button) findViewById(R.id.normal_);
but1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,NormalActivity.class);
startActivity(intent);
}
});
Button but2 = (Button) findViewById(R.id.dialog_);
but2.setOnClickListener(new View.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,"start");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG,"resume");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG,"pause");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG,"stop");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG,"restart");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG,"destroy");
}
}
為了區(qū)別onPause和onStop,我們將Dialog活動(dòng)聲明為對(duì)話框活動(dòng)
這只需要在manifests文件中做如下修改:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".NormalActivity" />
#給DialogActivity添加如下屬性android:theme
<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog">
DialogActivity.java
#這里android stdio創(chuàng)建活動(dòng)默認(rèn)繼承AppCompatActivity莲趣,需要修改為Activity
public class DialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
}
}
其他NormalActivity以及xml使用stdio默認(rèn)生成的就好啦~~
現(xiàn)在運(yùn)行一下~
第一步:?jiǎn)?dòng)應(yīng)用
Paste_Image.png
#######可以看到onStart和onResume響應(yīng)了
第二步:點(diǎn)擊NORMAL_VIEW
Paste_Image.png
MainActivity已經(jīng)完全不可見,所以響應(yīng)了onStop,這可以對(duì)比后面的Dialog_view
第三部:現(xiàn)在返回鍵返回MainActivity
Paste_Image.png
第四步:點(diǎn)擊DIALOG_VIEW
Paste_Image.png
MainActivity仍然可見羽莺,并未響應(yīng)onStop
第五步:返回
Paste_Image.png
第六步:退出應(yīng)用
Paste_Image.png