看板 AndroidDev 關於我們 聯絡資訊
簡單說 就是我的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
ssccg: 把這些變數初始化移到自訂的Application class 10/20 10:52
ssccg: 不要放在特定的Activity中 10/20 10:52
lnmlee: Activity Lifecycle 再看熟一點 這個是唯一讓你釐清問題的 10/20 11:01
lnmlee: 方法 但我估計不外乎 background thread update ui 所引發 10/20 11:01
lnmlee: 的 view null point 狀況居多 用多線程要隨時注意主線程的 10/20 11:01
lnmlee: 狀況去做處理 10/20 11:01
ssccg: btw一樓的作法是治標的方法,治本的方法是不要用靜態,應該 10/20 11:57
ssccg: 考慮資料的生命週期,選擇適當的context、在適當的地方載入 10/20 11:57
※ 編輯: taco2548 (42.77.67.77), 10/20/2017 12:56:06
diousk: 假如沒有一定需要回到B的話,可以在B activity 設noHistory 10/21 22:39
qpowjohn: 先用一樓的方法吧,我和你一樣也是菜鳥,用一樓方法比 11/05 00:28
qpowjohn: 較能快速解決問題 11/05 00:28
taco2548: 謝謝,我花了幾天時間把所有的靜態變數都變成非靜態了 11/05 10:45
taco2548: 但問題還是沒解決,用戶記憶體不足後,回到程式還是會報錯 11/05 10:46