Android四大元件之Activity詳解
阿新 • • 發佈:2018-12-30
一、Activity的生命週期:
import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { /*建立Activity時被回撥,執行初始化*/ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /*啟動Activity時被回撥,也就是當一個Activity變為顯示時被回撥*/ @Override protected void onStart() { super.onStart(); } /*重新啟動Activity時被回撥,該方法總是在onStart()方法後執行*/ @Override protected void onRestart() { super.onRestart(); } /*暫停Activity時被回撥,該方法需要非常快速的執行。通常用於持久儲存資料,例如我們玩遊戲時,突然來了電話,這時我們就要儲存遊戲狀態*/ @Override protected void onPause() { super.onPause(); } /*當Activity由暫停狀態恢復為活動狀態時被呼叫,該方法總是在onPause()方法後執行*/ @Override protected void onResume() { super.onResume(); } /*停止Activity時被回撥*/ @Override protected void onStop() { super.onStop(); } /*銷燬Activity時被回撥*/ @Override protected void onDestroy() { super.onDestroy(); } }
二、在AndroidManifest.xml配置Activity:
<application android:allowBackup="是否備份" android:icon="@mipmap/圖示檔名" android:label="說明性文字" android:theme="要應用的主題"> <activity android:name=".Activity名字"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
三、啟動、跳轉和關閉Activity:
/*啟動和跳轉*/
Intent intent = new Intent(A.this, B.class);
startActivity(intent);
/*關閉*/
finish();
四、Activity之間資料傳遞
1.Intent簡單傳值:
Intent intent = new Intent(A.this, B.class);
intent.putExtra("key", "value");
startActivity(intent);
Intent intent = getIntent(); int key = intent.getIntExtra("key", 0);
2.Bundle在Activity之間交換資料:
Intent intent = new Intent(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("key", value);
intent.putExtra(bundle);
startActivity(intent);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String key = bundle.getString("key");
五、Activity四種啟動模式
1.standard
預設模式,可以不用寫配置。在這個模式下,都會預設建立一個新的例項。因此,在這種模式下,可以有多個相同的例項,也允許多個相同Activity疊加。
例如:
若我有一個Activity名為A1, 上面有一個按鈕可跳轉到A1。那麼如果我點選按鈕,便會新啟一個Activity A1疊在剛才的A1之上,再點選,又會再新啟一個在它之上……
點back鍵會依照棧順序依次退出。
2.singleTop
可以有多個例項,但是不允許多個相同Activity疊加。即,如果Activity在棧頂的時候,啟動相同的Activity,不會建立新的例項,而會呼叫其onNewIntent方法。
3.singleTask
只有一個例項。在同一個應用程式中啟動他的時候,若Activity不存在,則會在當前task建立一個新的例項,若存在,則會把task中在其之上的其它Activity destory掉並呼叫它的onNewIntent方法。
如果是在別的應用程式中啟動它,則會新建一個task,並在該task中啟動這個Activity,singleTask允許別的Activity與其在一個task中共存,也就是說,如果我在這個singleTask的例項中再開啟新的Activity,這個新的Activity還是會在singleTask的例項的task中。
4.singleInstance
只有一個例項,並且這個例項獨立執行在一個task中,這個task只有這個例項,不允許有別的Activity存在。