在AndroidManifest中Activity的launchMode有四種類型:
1.standard
2.singleTop
3.singleTask
4.singleInstance
今天就簡單介紹一下,附上一個參考地址,人家寫的牛逼http://blog.csdn.net/moreevan/article/details/6788048
下面還是看代碼吧,都放到注釋裡了:
package com.mxy;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.View;/** * 進程 參考http://blog.csdn.net/niu_gao/article/details/7202300 * Activity四種啟動模式 * standard 按照棧先進後出的順序儲存 * 例如 依次點開 act1 act2 act1 act2 點擊返回的時候就是 act2 act1 act2 act1 雖然裡面有兩個act1 兩個act2 但卻都不相同 * * singleTop 當進入的Activity已經在棧頂了,不會再建立新的Activity放入棧中,而是複用棧頂的activity,但是會調用onResume方法 * 例如 act2是singleTop的 依次點擊 act1 act1 act2 act2 act2 這時候棧中存著的就是act1 act1 act2 點擊返回的餓時候就是act2 act1 act1 * 在瀏覽器中得書籤會用到該模式 * * SingleTask 一般和singleTop操作模式類似,如果他發現任務棧裡面已經有了要啟動的這個Activity,他會清空這個Activity所在的任務棧上面的所有Activiy,然後直接複用這個已經存在的Activity 。 * 例如 act2是SingleTask的 依次進入 act1 act2 act1 act2 act1 act2這時候棧中存在的是act1 act2 點擊返回的時候就是act2 act1 * * singleinstance 被設定了singleinstance得Activity,會放入一個獨自的任務棧,然後其他未設定為singleinstance的任務棧,如果設定了singleinstance得Activity * 被請求了,那這時候這個任務棧的優先順序就比另一個普通的任務棧的層級高,就會被運行,如果其他的Activity被請求,就會降低該任務棧的優先順序 * 例如 act2是singleinstance的 這時候我們 * 點擊act1 後 * 任務棧 優先順序 棧中資料(左邊表示棧頂) * 普通 低 act1 *點擊act2後 * 普通 低 act1 * 單例 高 act2 * 點擊act3後 * 普通 高 act1 act3 * 單例 低 act2 *點擊act2後 * 普通 低 act1 act3 * 單例 高 act2 * @author mxy * */public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Overrideprotected void onResume() {Log.i("mxy", "MainActivity");super.onResume();} @Override public 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; } public void click(View view){ Intent intent = new Intent(this,SecondActivity.class); startActivity(intent); } }例子源碼地址:http://download.csdn.net/detail/mengxiangyue/7262467