Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android自學筆記-16-任務棧

Android自學筆記-16-任務棧

編輯:關於Android編程

在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);
    }

    @Override
	protected 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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved