編輯:關於android開發
當活動的啟動模式指定為singleTop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直接使用它,不會再創建新的活動實例。當然,如果它不是處於棧頂的位置,那麼系統依舊會再創建一個該活動的實例。
我們可以在AndroidManifest.xml文件中進行啟動模式的設置;在<activity>標簽中添加android:launchModed的屬性,其屬性值設置為SingleTop即可。
在AS中創建項目LearnLaunchMode_SingleTop,其各部分代碼如下:
FirstActivity.java:
1 public class FirstActivity extends ActionBarActivity { 2 private Button start_secondActivity; 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 requestWindowFeature(Window.FEATURE_NO_TITLE); 7 setContentView(R.layout.activity_first); 8 //獲取Button組件 9 start_secondActivity = (Button) findViewById(R.id.start_secondActivity); 10 start_secondActivity.setOnClickListener(new View.OnClickListener() { 11 @Override 12 public void onClick(View v) { 13 //通過顯示意圖啟動SecondActivity 14 Intent intent = new Intent().setClass(FirstActivity.this, SecondActivity.class); 15 startActivity(intent); 16 } 17 }); 18 Log.i("TAG", this + " is launch"); 19 } 20 }
SecondActivity.java:
1 public class SecondActivity extends Activity { 2 3 private Button start_firstActivity, start_self; 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 requestWindowFeature(Window.FEATURE_NO_TITLE); 8 setContentView(R.layout.activity_second); 9 //獲取Button組件 10 start_firstActivity = (Button) findViewById(R.id.start_firstActivity); 11 start_self = (Button) findViewById(R.id.start_self); 12 //以匿名類的形式為Button組件設置事件監聽器 13 start_firstActivity.setOnClickListener(new View.OnClickListener() { 14 @Override 15 public void onClick(View v) { 16 //通過顯示意圖啟動SecondActivity 17 Intent intent = new Intent().setClass(SecondActivity.this, FirstActivity.class); 18 startActivity(intent); 19 } 20 }); 21 start_self.setOnClickListener(new View.OnClickListener() { 22 @Override 23 public void onClick(View v) { 24 //通過顯示意圖啟動SecondActivity 25 Intent intent = new Intent().setClass(SecondActivity.this, SecondActivity.class); 26 startActivity(intent); 27 } 28 }); 29 Log.i("TAG", this + " is launch"); 30 } 31 }
activity_first.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" 7 tools:context=".FirstActivity"> 8 9 <Button 10 android:id="@+id/start_secondActivity" 11 android:layout_width="match_parent" 12 android:layout_height="wrap_content" 13 android:text="啟動第二個Activity!"/> 14 15 </LinearLayout>
Activity_second.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" 7 tools:context=".SecondActivity"> 8 9 <Button 10 android:id="@+id/start_firstActivity" 11 android:layout_width="match_parent" 12 android:layout_height="wrap_content" 13 android:text="啟動第一個Activity!"/> 14 15 <Button 16 android:id="@+id/start_self" 17 android:layout_width="match_parent" 18 android:layout_height="wrap_content" 19 android:text="啟動本身第二個Activity!"/> 20 21 </LinearLayout>
另外,別忘了在AndroidManifest.java文件中注冊SecondActivity以及為兩個活動設置啟動模式為SingleTop:
1 <activity 2 android:name=".FirstActivity" 3 android:label="@string/app_name" 4 android:launchMode="singleTop"> 5 <intent-filter> 6 <action android:name="android.intent.action.MAIN" /> 7 8 <category android:name="android.intent.category.LAUNCHER" /> 9 </intent-filter> 10 </activity> 11 <activity android:name=".SecondActivity" android:launchMode="singleTop"/>
在代碼中,我們實現以FirstActivity啟動SecondActivity,此時SecondActivity位於棧頂,然後再以SecondActivity來打開自己,如果是Standard模式,那麼會另外再創建SecondActivity的實例,但是在SingleTop的模式下,就只會創建一次該活動實例。(PS:在SecondActivity界面時,點擊了很多次的"啟動本身第二個Activity!"的按鈕)
同樣,我們還可以在SecondActivity界面點擊"啟動第一個Activity!"的按鈕,雖然棧中已經存在了FirstActivity,但是它並非位於棧頂,所以還是會繼續創建FirstActivity的實例。
雖然點擊了很多次"啟動本身第二個Activity!"的按鈕,但因為在棧中只創建一個SecondActivity的實例,所以只需要按一次back鍵就可以將SecondActivity出棧。
綜上所述,可以畫出SingleTop啟動模式的原理示意圖如下:
FFmpeg使用手冊 - FFmpeg 的基本組成1 FFmpeg 的基本組成FFmpeg 的基本組成包含Format、Codec、Filter、Devices、Util
Unity+高通Vuforia SDK——AR播放視頻 在之前的文章中我們已經實現了基本的圖片識別,並在識別的圖片上顯示3D模型,但是有的時候我們實際上需要在
材料設計---Design,設計---design 效果: main_activity.xml <?xml version=1.0 encoding
我的第一節Android課,第一節Android課 我的第一節安卓課程,今天非比尋常的一天,我開始了我程序猿之路的第一節安卓課程,安卓課程只是我的一個興趣班,我的本專業