国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android Activity啟動模式之singleTop實例詳解

2020-04-11 10:58:15
字體:
供稿:網(wǎng)友

本文實例講述了Android Activity啟動模式之singleTop。分享給大家供大家參考,具體如下:

在前面文章《Android Activity啟動模式之standard實例詳解》中,我們介紹了活動的默認啟動模式standard,本文繼續(xù)介紹Activity的singleTop模式。

singleTop模式當Activity的活動模式設置為singleTop時,在啟動活動時首先檢查棧頂活動是否是該活動,如果是,在使用當前實例,否則繼續(xù)創(chuàng)建新的實例

(1)修改AndroidManifest.xml

修改該配置文件,設置MainActivity的啟動模式為singleTop,如下:

<activity   android:name=".MainActivity"   android:label="@string/app_name"   android:launchMode="singleTop" >   <intent-filter>    <action android:name="android.intent.action.MAIN" />    <category android:name="android.intent.category.LAUNCHER" />   </intent-filter></activity>

設置活動的launchMode為singleTop。

(2)發(fā)布程序,查看日志

無論點擊多少次按鈕,都不會有新的日志打印出來。原因是當前棧頂活動為MainActivity,啟動模式是singleTop,當發(fā)現(xiàn)棧頂為該活動時,就使用當前實例,不在新建實例。因為MainActivity只有一個實例,所以只需按一次Back鍵就可退出當前活動。

如果當前棧頂活動部是MainActivity呢?結(jié)果又會是什么?做如下實驗:

(1)新建一個活動MyActivity1

布局文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button  android:id="@+id/myButton1"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:text="MyActivity1 Button" /></LinearLayout>

把當前活動在AndroidManifest.xml文件中進行注冊(省略)。

(2)修改MainActivity.java的onCreate方法

@Overrideprotected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  //打印當前對象  Log.d("MainActivity", this.toString());  //去掉title  requestWindowFeature(Window.FEATURE_NO_TITLE);  setContentView(R.layout.activity_main);  //獲取button1  Button button1 = (Button) findViewById(R.id.button1);  //添加點擊事件  button1.setOnClickListener(new OnClickListener() {   @Override   public void onClick(View view) {    //為了測試singleTop啟動模式,當點擊按鈕時,啟動MyActivity1活動    Intent intent = new Intent(MainActivity.this,MyActivity1.class);    //啟動活動    startActivity(intent);   }  });}

即點擊按鈕時跳到MyActivity1活動

(3)修改MyActivity1的onCreate方法

@Overrideprotected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  //打印當前對象  Log.d("MyActivity1", this.toString());  requestWindowFeature(Window.FEATURE_NO_TITLE);  setContentView(R.layout.activity1_my);  //獲取按鈕  Button myButton = (Button)findViewById(R.id.myButton1);  //點擊事件  myButton.setOnClickListener(new OnClickListener() {   @Override   public void onClick(View arg0) {    //啟動MainActivity活動    Intent intent = new Intent(MyActivity1.this,MainActivity.class);    startActivity(intent);   }  });}

即點擊按鈕時跳到主活動MainActivity。

(4)發(fā)布程序,查看日志

在主活動MainActivity中點擊按鈕進入MyActivity1中,然后點擊按鈕再次進入MainActivity中,日志顯示如下:

第一個日志是初次進入MainActivity打印的,點擊按鈕進入MyActivity1,打印了第二個日志。當點擊MyActivity1中的按鈕時,此時棧頂活動是MyActivity1,所以當點擊按鈕時,會創(chuàng)建一個新的MainActivity實例。

此時,點擊Back退到MyActivity1,再次點擊退到MainActivity,再次點擊則退出程序。

更多關于Android Activity相關內(nèi)容感興趣的讀者可查看本站專題:《Android編程之a(chǎn)ctivity操作技巧總結(jié)

希望本文所述對大家Android程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 瑞安市| 嘉鱼县| 从江县| 高安市| 百色市| 吉安县| 张掖市| 郁南县| 忻城县| 尼勒克县| 大洼县| 鸡泽县| 巴林右旗| 曲靖市| 郧西县| 囊谦县| 门源| 德令哈市| 许昌市| 湖北省| 平谷区| 永川市| 房山区| 浮山县| 横峰县| 都匀市| 宜州市| 重庆市| 平泉县| 临沂市| 盐津县| 观塘区| 醴陵市| 桐柏县| 鄂伦春自治旗| 图片| 会同县| 乐至县| 固原市| 阿鲁科尔沁旗| 辽宁省|