[問題] 請問如何解決記憶體不足的空指針

看板AndroidDev作者 (T@cO)時間6年前 (2017/10/20 10:39), 6年前編輯推噓0(0013)
留言13則, 5人參與, 6年前最新討論串1/1
簡單說 就是我的APP暫時退出,回到了手機的主畫面 用戶開啟了其他APP或執行一些需要大量記憶體的操作 然後回到我的APP之後就出錯了 因為我本身菜B巴 第一支APP使用了相當多靜態變數與類別 每次重啟一定要從Logo畫面開始跑 不然就會報出空指針的問題 但是從主畫面恢復時是直接從MainActivity開始,而不是LogoActivity 我最近才從GooglePlay Console的當機報告查覺這個問題有點嚴重 所有的報告幾乎都來自這個問題 目前想要先做一些緊急補救措施 不知道各位先進有沒有什麼好方法可以提供? 補充: 我這邊加些重點,我的Logo初始頁是A,我的MainActivity是B 當A啟動時會先為B做一些初始化的動作,然後啟動B 問題是出在當我按了Home鍵退回主畫面後 用戶發生記憶體容量不足,系統自動銷毀了APP 之後若用戶已任何形式回到APP,則是直接回到B,而不是A 而這時一堆變數都已經變成null,所以直接報錯 爬了google大概瞭解我目前有兩個處理方式 1.想辦法回到APP時不回到B,而是回到A 2.將一些根部的資料利用savedInstanceState存起來,回到APP時讀出 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.77.67.77 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1508467197.A.1E4.html

10/20 10:52, 6年前 , 1F
把這些變數初始化移到自訂的Application class
10/20 10:52, 1F

10/20 10:52, 6年前 , 2F
不要放在特定的Activity中
10/20 10:52, 2F

10/20 11:01, 6年前 , 3F
Activity Lifecycle 再看熟一點 這個是唯一讓你釐清問題的
10/20 11:01, 3F

10/20 11:01, 6年前 , 4F
方法 但我估計不外乎 background thread update ui 所引發
10/20 11:01, 4F

10/20 11:01, 6年前 , 5F
的 view null point 狀況居多 用多線程要隨時注意主線程的
10/20 11:01, 5F

10/20 11:01, 6年前 , 6F
狀況去做處理
10/20 11:01, 6F

10/20 11:57, 6年前 , 7F
btw一樓的作法是治標的方法,治本的方法是不要用靜態,應該
10/20 11:57, 7F

10/20 11:57, 6年前 , 8F
考慮資料的生命週期,選擇適當的context、在適當的地方載入
10/20 11:57, 8F
※ 編輯: taco2548 (42.77.67.77), 10/20/2017 12:56:06

10/21 22:39, 6年前 , 9F
假如沒有一定需要回到B的話,可以在B activity 設noHistory
10/21 22:39, 9F

11/05 00:28, 6年前 , 10F
先用一樓的方法吧,我和你一樣也是菜鳥,用一樓方法比
11/05 00:28, 10F

11/05 00:28, 6年前 , 11F
較能快速解決問題
11/05 00:28, 11F

11/05 10:45, 6年前 , 12F
謝謝,我花了幾天時間把所有的靜態變數都變成非靜態了
11/05 10:45, 12F

11/05 10:46, 6年前 , 13F
但問題還是沒解決,用戶記憶體不足後,回到程式還是會報錯
11/05 10:46, 13F
文章代碼(AID): #1PwM7z7a (AndroidDev)