Activity SingleInstance啟動模式


 

關於SingleInstance Activity的注意事項:

1.當Activity被多次通過Intent方式進入后,不會重復onCreate而是執行onNewIntent方法;

https://blog.csdn.net/su20145104009/article/details/50662731

2.兩個坑:https://blog.csdn.net/Mr_JingFu/article/details/79077613

  • 啟動順序為:ActivityA->ActivityB(SingleInstance )->ActivityC ,點擊Back退出順序:C-》A-》B !!!
  • 啟動順序為:ActivityA->ActivityB(SingleInstance ),點擊HOME鍵再切回應用,展示A而不是B。
  • 解決方式是一樣的:

在ActivityB定義一個全局變量,public static boolean returnActivityB;在onCreate方法將returnActivityB=true;

然后在ActivityA界面onStart方法里判斷returnActivityB是否為true,是的話就跳轉到ActivityB,同時將returnActivityB=false;這樣就能解決跳轉的問題了。

3.如何合理的使用Activity:

https://www.cnblogs.com/dreamy890322/articles/6054395.html

如果不是應用退出,不要finish掉Instance,采用隱藏的方式:

@Override
public boolean onKeyDown(int keycode, KeyEvent event) {
    L.e("Key_Stuta = " + event.getAction());
    if (keycode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // 右鍵處理
        moveTaskToBack(true);
    }
    return true;
}

 

-----------------------------------》

4.再填新坑。。。

問題 【singleInstance和singleTask導致startActivityForResult回調失敗】https://blog.csdn.net/ben0612/article/details/43083533

解析:startActivityForResult啟動singleTask的Activity,則onActivitResult()立即回調且resultCode為RESULT_CANCEL  https://blog.csdn.net/sodino/article/details/22101881

5.設置了"singleTask"啟動模式的Activity的特點: https://blog.csdn.net/Luoshengyang/article/details/6714543

        1. 設置了"singleTask"啟動模式的Activity,它在啟動的時候,會先在系統中查找屬性值affinity等於它的屬性值taskAffinity的任務存在;如果存在這樣的任務,它就會在這個任務中啟動,否則就會在新任務中啟動。因此,如果我們想要設置了"singleTask"啟動模式的Activity在新的任務中啟動,就要為它設置一個獨立的taskAffinity屬性值。

        2. 如果設置了"singleTask"啟動模式的Activity不是在新的任務中啟動時,它會在已有的任務中查看是否已經存在相應的Activity實例,如果存在,就會把位於這個Activity實例上面的Activity全部結束掉,即最終這個Activity實例會位於任務的堆棧頂端中。

 

-----------------》

6.再添新坑 

之所以用 onNewIntent(Intent intent) 而不是在 onResume() 中通過調用 getIntent()獲取最新Bundle中的信息,是因為 getIntent獲取的是第一次啟動時傳入的

一些舊的參數信息,最新的跳轉信息如 intent.putExtra("setting", "1"); 需要在onNewIntent傳入的intent參數中取出。。。謝特

 getIntent();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM