singlelnstance模式singlelnstance模式kotlin.Android
Activity啟動模式
singlelnstance模式
就是把要啟動的Activity放在定外一個返回棧中、
程式碼如下
class FirstActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("啟動","這Activity在哪個返回棧的id$taskId")
setContentView(R.layout.first_layout)
// var button1: Button=findViewById(R.id.button1)
button1.setOnClickListener {
//singlelnstance的啟動模式
val intent1 = Intent(this,SecondActivity::class.java)
startActivity(intent1)
//singlelnstance的啟動模式
}
}
}
把這個Activity放在另外一個返回棧中程式碼如下
android:launchMode="singleInstance"
<activity android:name=".SecondActivity"
android:launchMode="singleInstance"
>
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_CATEGORY" />
</intent-filter>
</activity>
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("啟動","這Activity在哪個返回棧的id$taskId")
setContentView(R.layout.second_layoul)
button2.setOnClickListener{
val intent = Intent(this,ThirdActivity::class.java)
startActivity(intent)
}
}
}
class ThirdActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Log.d("啟動","這Activity在哪個返回棧的id$taskId")
setContentView(R.layout.third_layout)
}
}
執行程式 點選FirstActivity進入SecondActivity,然後在SecondActivity點選按鈕進入ThirActivity。
列印結果
再按Back返回鍵你會發現直接返回到了FirstActivity,當FirstAcivity處於棧頂,按下Back鍵返回ThirdActivity出棧,Firstactivity處於棧頂,再按下Back鍵,這時返回棧已經空了,於是顯示另外一個返回棧的棧頂Activity
另外一個棧頂的Activity是secondActivity,它久顯示出來,最後按下Back鍵這是所有返回棧都已經空了所以推出程式。
singleInstance原理圖
相關文章
- 設計模式-單例模式、多例模式設計模式單例
- 設計模式 #5 (策略模式、代理模式)設計模式
- 建立型模式-單例模式-工廠模式模式單例
- 設計模式-單例模式,觀察者模式設計模式單例
- 設計模式--介面卡模式/代理模式設計模式
- 設計模式(二十):訪問者模式、迭代器模式、觀察者模式、原型模式、模板方法設計模式原型
- 共享模式 & 專有模式模式
- iOS模式分析 策略模式iOS模式
- 設計模式----代理模式設計模式
- 設計模式----中介模式設計模式
- 設計模式——策略模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式-中介模式設計模式
- 設計模式-模板模式設計模式
- 設計模式——模板模式設計模式
- 設計模式——代理模式設計模式
- 設計模式-代理模式設計模式
- 設計模式-策略模式設計模式
- PHP 模式大全 - 策略模式PHP模式
- PHP模式大全 - 多例模式PHP模式
- 設計模式~代理模式設計模式
- 【設計模式】代理模式設計模式
- 工廠模式 抽象模式模式抽象
- 設計模式--命令模式設計模式
- 設計模式----Observer模式設計模式Server
- 設計模式🔫---策略模式設計模式
- C++設計模式之Proxy模式(代理模式)C++設計模式
- 設計模式-行為型模式-中介者模式設計模式
- Java設計模式——單例模式(建立型模式)Java設計模式單例
- 設計模式 #3 (原型模式、建造者模式)設計模式原型
- 設計模式之【門面模式(外觀模式)】設計模式
- Java設計模式(22)命令模式(Command模式)Java設計模式
- javascript模式 (3)——工廠模式和裝飾模式JavaScript模式
- 【設計模式(四)】建立型模式--原型模式設計模式原型
- 設計模式(Swift) - 2.單例模式、備忘錄模式和策略模式設計模式Swift單例
- 用到的設計模式總結--單例模式+工廠方法模式+Builder模式設計模式單例UI
- 設計模式-工廠模式二(工廠方法模式)設計模式
- Java設計模式(13):享元模式(蠅量模式)Java設計模式