singlelnstance模式singlelnstance模式kotlin.Android

機器你好發表於2020-12-09

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原理圖

 

 

 

 

 

 

 

 

相關文章