日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Activity的生命周期理解

發(fā)布時間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Activity的生命周期理解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Activity擁有4個基本狀態(tài):

活動狀態(tài):當(dāng)前Activity位于前臺,可以看見也可以獲得焦點,可以接受用戶輸入的

暫停狀態(tài):其他Activity位于前臺,該Activity依然可見,但是不能獲得焦點(比如一個非全屏或者透明的Activity在你的Activity的上方擁有焦點),它的狀態(tài)是暫停的。一個暫停狀態(tài)下的Activity是活著的,但在系統(tǒng)極端低的狀態(tài)下可以被殺死

停止?fàn)顟B(tài):當(dāng)一個Activity完全被另一個Activity遮蓋,它的狀態(tài)是停止的。該Activity不可見,失去焦點。這種狀態(tài)很容易被系統(tǒng)殺死

銷毀狀態(tài):該Activity被系統(tǒng) 結(jié)束,該Activity結(jié)束或Activity所在的Dalvik進(jìn)程被結(jié)束

Activity的生命周期圖:



我們來說一下Activity的生命周期過程:

運行-暫停-運行

onCreate->onStart->onResume->onPause->onResume

1.啟動Activity:系統(tǒng)會先調(diào)用onCreate方法,然后調(diào)用onStart方法,最后調(diào)用onResume,Activity進(jìn)入運行狀態(tài)。
2.當(dāng)前Activity被其他Activity覆蓋其上或被鎖屏:系統(tǒng)會調(diào)用onPause方法,暫停當(dāng)前Activity的執(zhí)行。
3.當(dāng)前Activity由被覆蓋狀態(tài)回到前臺或解鎖屏:系統(tǒng)會調(diào)用onResume方法,再次進(jìn)入運行狀態(tài)。

運行-停止-運行:

onCreate->onStart->onResume->onPause->onStop->onRestart->onStart->onResume
4.當(dāng)前Activity轉(zhuǎn)到新的Activity界面或按Home鍵回到主屏,自身退居后臺,不可見失去焦點:系統(tǒng)會先調(diào)用onPause方法,然后調(diào)用onStop方法,進(jìn)入停滯狀態(tài)。
5.用戶后退回到此Activity:系統(tǒng)會先調(diào)用onRestart方法,然后調(diào)用onStart方法,最后調(diào)用onResume方法,再次進(jìn)入運行狀態(tài)。

運行-銷毀:
6.當(dāng)前Activity處于被覆蓋狀態(tài)或者后臺不可見狀態(tài),即第2步和第4步,系統(tǒng)內(nèi)存不足,殺死當(dāng)前Activity,而后用戶退回當(dāng)前Activity:再次調(diào)用onCreate方法、onStart方法、onResume方法,進(jìn)入運行狀態(tài)。
7.用戶退出當(dāng)前Activity:系統(tǒng)先調(diào)用onPause方法,然后調(diào)用onStop方法,最后調(diào)用onDestory方法,結(jié)束當(dāng)前Activity。


Activity有三個關(guān)鍵的循環(huán):
整個的生命周期,從onCreate(Bundle)開始到onDestroy()結(jié)束。Activity在onCreate()設(shè)置所有的“全局”狀態(tài),在onDestory()釋放所有的資源。例如:某個Activity有一個在后臺運行的線程,用于從網(wǎng)絡(luò)下載數(shù)據(jù),則該Activity可以在onCreate()中創(chuàng)建線程,在onDestory()中停止線程。
可見的生命周期,從onStart()開始到onStop()結(jié)束。在這段時間,可以看到Activity在屏幕上,盡管有可能不在前臺,不能和用戶交互。在這兩個接口之間,需要保持顯示給用戶的UI數(shù)據(jù)和資源等,例如:可以在onStart中注冊一個IntentReceiver來監(jiān)聽數(shù)據(jù)變化導(dǎo)致UI的變動,當(dāng)不再需要顯示時候,可以在onStop()中注銷它。onStart(),onStop()都可以被多次調(diào)用,因為Activity隨時可以在可見和隱藏之間轉(zhuǎn)換。
前臺的生命周期,從onResume()開始到onPause()結(jié)束。在這段時間里,該Activity處于所有 Activity的最前面,和用戶進(jìn)行交互。Activity可以經(jīng)常性地在resumed和paused狀態(tài)之間切換,例如:當(dāng)設(shè)備準(zhǔn)備休眠時,當(dāng)一個 Activity處理結(jié)果被分發(fā)時,當(dāng)一個新的Intent被分發(fā)時。所以在這些接口方法中的代碼應(yīng)該屬于非常輕量級的。

MainActivity.java

package com.example.activitylifecircle;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.widget.Button;public class MainActivity extends Activity {final String TAG="-Activity State-";Button finish,start;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d(TAG, "--OnCreate--");finish=(Button) findViewById(R.id.button1);start=(Button) findViewById(R.id.button2);start.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent=new Intent(MainActivity.this,SecondActivity.class);startActivity(intent);}});finish.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//結(jié)束該ActivityMainActivity.this.finish();}});}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.d(TAG, "--OnStart--");}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Log.d(TAG, "--OnRestart--");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.d(TAG, "--OnResume--");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.d(TAG, "--OnPause--");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.d(TAG, "--OnStop--");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.d(TAG, "--OnDestroy--");}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);} }





總結(jié)

以上是生活随笔為你收集整理的Activity的生命周期理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。