日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android---33---四種加載模式

Android---33---四種加載模式

來源:程序員人生   發(fā)布時間:2015-07-14 14:09:49 閱讀次數:3771次

Android的4種加載模式:

 

首先在配置Activity時便可指定該Activity用哪一種加載模式,通過android:launchMode屬性。

 

4種加載模式:

standard:標準模式,默許

singleTop:Task頂單例模式

singleTask:Task內單例模式

singleInstance:全局單例模式

 

Android是通過Task對Activity進行管理的,通過getTaskID()方法可以取得當前活動的Task的ID。

可以把Task理解成Activity棧,Task以棧的情勢來管理Activity。

 

 

下面是4種模式:

1.standard模式

每次通過這類模式來啟動目標Activity時,Android會為目標Activity創(chuàng)建1個新的實例,并將干Activity添加到當前Task棧中----這類模式不會啟動新的Task,新Activity將被添加到原本的Task中。


import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout layout = new LinearLayout(MainActivity.this); layout.setOrientation(1); setContentView(layout); TextView textView = new TextView(MainActivity.this); textView.setText("ACtivity為 :" + this.toString() + " " + ",Task Id為:" + this.getTaskId()); Button button = new Button(this); button.setText("啟動Main"); layout.addView(textView); layout.addView(button); button.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, MainActivity.class); startActivity(intent); } }





屢次點擊按鈕,程序會不斷的啟動當前活動,活動的hashCode變化,但是TaskId總是1樣的,這就表明這類加載模式不會啟動新的Task。

當按返回鍵的時候,啟動的活動會逐1從棧頂刪除。




2.singleTop

這類模式與標準模式基本相似,但是有1點不同:當將要被啟動的目標Activity已位于棧頂時,系統(tǒng)不會重新創(chuàng)建目標Activity實例,而是直接復用已有的Activity實例。

將上例中的launchmode改成singleTop,不管用戶點擊多少次按鈕,界面上的程序不會有任何變化。

如果說要被啟動的目標Activity沒有位于Task棧頂,此時系統(tǒng)會重新創(chuàng)建目標Activity實例,并將它加載到Task的棧頂----此時與標準模式完全相同。



3.singleTask


采取這類加載模式的Activity在同1個Task內只有1個實例,啟用目標Activity時,有下面3種情況:

1.如果將要啟動的活動不存在,則創(chuàng)建,放入棧頂

2.如果目標Activity已存在于棧頂,則與singleTop1樣

3.如果目標Activity已存在,但是否是位于棧頂,系統(tǒng)會將目標活動前的活動移出Task棧,使得目標Activity位于棧頂

 

演示說明第3種情況:

 

程序中有兩個活動,活動中都有1個TextView和1個Button,TextView用來顯示活動的hashCode和TaskID,Button用來啟動不同的活動。

當按下第1個活動中的按鈕時會啟動第2個活動,當按下第2個活動中的按鈕的時候會啟動第1個活動。








1表示活動1和它的加載模式

2表示活動2和它的加載模式

這就是運行截圖與示意圖。

首先先創(chuàng)建并啟動的是1,再創(chuàng)建啟動2,再創(chuàng)建啟動1,再啟動2,已有2了,不會創(chuàng)建,所以便把2之前的1移出棧,使得2位于棧頂。

如果在接著啟動1的話,這個1會再進行創(chuàng)建,已不是原來的活動1了。

應當可以充分的說明上述第3種情況。



4.singleInstance



再這類加載模式下,系統(tǒng)保證不管從哪一個Task中啟動目標活動,只會創(chuàng)建1個目標活動實例,并會使用1個全新的Task棧來裝載該活動實例

當系統(tǒng)采取該模式啟動目標活動的時候,有以下兩種情況:

1.如果將要啟動的活動不存在,則先創(chuàng)建1個Task,再創(chuàng)建目標活動,加入棧頂

2.如果目標活動已存在,不管它在哪一個利用程序中,不管在哪一個Task中,系統(tǒng)會把還Activity所在的Task棧轉到前臺,從而使用該Activity顯示出來

采取singleInstance加載模式加載Activity總是位于Task棧頂,由于Task棧中只有1個Activity。

 

將上例中的兩個活動的加載模式都改成singleInstance。





生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲20p | 国产精品欧美一区二区 | 在线一二区 | 精品一区二区三区日产乱码 | 成人片在线看 | 久久精品国产亚洲一区二区三区 | 日韩精品在线视频 | aⅴ一级片 | 免费一二二区视频 | 国产精品99999 | 日韩免费一区 | 美国成人影院 | 免费观看日韩毛片 | 成人免毛片 | 精品久久久国产 | 久久国产综合 | 免费日韩三级 | 精品久久精品 | 在线免费看毛片 | 国产激情在线观看 | 亚洲欧美日韩在线播放 | 日本激情在线 | 欧美在线观看视频 | 国产精品爽爽爽爽爽爽在线观看 | 国产一区二区三区视频 | 三级网站| 日本久久久久久久 | 国内精品久久久久久久 | 精品一区二区三区在线播放 | 黄色一及视频 | 亚洲成av人片在线观看香蕉 | 亚洲国产精品久久人人爱 | 亚洲一区二区三区久久 | 欧美三级视频 | 国产精品国产三级国产 | 丰满少妇高潮惨叫久久久一 | 99精品视频在线观看免费播放 | www.日韩视频 | 91—区二区国产好的精华液 | 日韩中文字幕视频在线观看 | 国产精品免费看 |