程序退到後臺在返回,application中的緩存數據被回收,導致程序異常



      Application中可以緩存一些數據,當做全局變量使用,但是當程序退到後臺,手機內存不足時,或者用手機加速軟件加速,這些數據就會被回收,當再次進入程序的時候,就會出現空指針異常。程序強制退出。

       解決方案。
    一、可以用到數據持久化技術,將緩存的數據持久化到設備中,可以用SharePreference和sqlite數據庫將數據保存,當被回收的時候再次取出。這種方法比較複雜,數據較多時需要重新設計數據庫進行數據存儲,所以在一開始的時候就要考慮到數據是否需要持久化。
    二、可以設置一個程序入口,當數據被回收的時候統一進入到程序入口界面,這個界面的信息獲取就相對簡單了。就像qq,進入的時候停留在好友列表。
     實現方法
     在不是程序入口界面的activity中進行判斷,可以在oncreate方法中進行判斷。當數據被回收的時候就調用android.os.Process.killProcess(android.os.Process.myPid());結束當前的activity。
     系統其實只是記錄了APP中activity打開的順序,當我們再次打開被系統回收的APP的時候APP中其實只有一個activity,當我killProcess的時候,系統又會重新建一個線程去打開第二個activity,依次類推  當打開程序入口的activity時,由於我們去沒有銷燬它,所以activity被重新加載,相當於重新打開了應用  。
可以設置這個入口是loginActivity這種事最簡單的,不需要持久化任何數據,也可以設置一個主界面,這樣體驗更佳




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章