AndroidDev 板


LINE

假設宣告 ArrayList<String> a = new ArrayList <String>; ArrayList<String> b = new ArrayList <String>; ArrayList<String> c = new ArrayList <String>; ArrayList<String> d = new ArrayList <String>; 當 a, b, c被賦予值後, 接著再將d 賦予值後 a原本的值就會變成null 此情況在某些裝置上會發生,在某些裝置上並不會發生。 因此我猜測arraylist a應該是被系統自動回收了? 請問大家對於此情況該如何避免呢? 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.137.106
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1425117213.A.F59.html
1F:推 mozzan: 你的問題不是很清楚,但手機須注意life cycle, 在activity 02/28 19:39
2F:→ mozzan: 創建時init好要用到的資料 02/28 19:40
3F:→ mozzan: 我的經驗是當系統須呼叫onCreate時,這個activity就可能 02/28 19:44
4F:→ mozzan: 被回收掉部份資料 02/28 19:45
5F:→ sweet00914: A.b.c.d賦予值的時機在onCreate 02/28 21:14
6F:→ sweet00914: 且採用非同步的方式取得值 02/28 21:14
7F:→ givemepass: 印log看什麼時候被回收掉? 02/28 21:15
8F:→ sweet00914: 請問有何方式可以保存值?不被回收呢? 02/28 21:15
9F:→ ssccg: 把reference放在不會被回收的地方,如static或application 02/28 22:18
10F:→ ssccg: 或是在onSaveInstanceState的地方存起來,在onCreate再從 02/28 22:19
11F:→ ssccg: 進來的bundle讀回來 02/28 22:19
12F:→ ssccg: 可是在onCreate中賦值,應該本來就每次都會賦值了吧 02/28 22:21
13F:→ ssccg: 問題可能在你非同步取值有沒有做完,什麼時候做完吧 02/28 22:22
我已確認過,非同步已經取得值!被賦予spinner 且spinner也可以下拉選擇! 就當在a.get(position)的時候,發生例外 > 原因是 a = null
14F:→ qweqweqweqwe: 不太可能無緣無故被回收 應該是有地方寫錯了吧 02/28 23:11
15F:→ qweqweqweqwe: 最簡單的就是用final 先把 list init 然後 02/28 23:12
16F:→ qweqweqweqwe: onCreate 把值寫入 這樣可以避免不小心設成 null 02/28 23:12
有些手機上會發生這樣子的情況,但是有些手機並不會發生 ※ 編輯: sweet00914 (114.27.97.30), 03/01/2015 14:23:42
17F:→ KeySabre: arraylist掛在activity上 而activity結束生命周期的時 03/01 14:40
18F:→ KeySabre: 間並不一定 當系統資源較緊繃時 不用的activity會比較 03/01 14:40
19F:→ KeySabre: 快被gc 03/01 14:40
20F:→ KeySabre: 暫存資料掛在static也沒意義 整個application被結束回 03/01 14:43
21F:→ KeySabre: 收後還是會不見 03/01 14:43
22F:→ KeySabre: 應該寫到perferences或db或file 每次開啟先檢查暫存 決 03/01 14:44
23F:→ KeySabre: 定是否更新暫存 03/01 14:44
24F:→ KeySabre: 暫存在memory只能保證此次執行能用 但你不能保證自己的 03/01 14:46
25F:→ KeySabre: 執行何時被系統結束 03/01 14:46
26F:→ KeySabre: 不過這邊講的只是概念 實際上我們不知道你程式碼長怎樣 03/01 14:49
27F:→ KeySabre: 但沒有「無緣無故回收」這種事 應該要想辦法知道緣故 03/01 14:49
28F:→ qweqweqweqwe: 當arraylist放在activity內 activity被回收後拿不到 03/01 17:24
29F:→ qweqweqweqwe: arraylist 完全是預期內的事 03/01 17:24
30F:推 qweqweqweqwe: 但我想說的是 在class內直接宣告成final也會有問題? 03/01 17:44
31F:→ qweqweqweqwe: 沒有有可能只是時機點的問題呢? 03/01 17:46
32F:推 beyondthe: 沒有無緣無故被gc +1 03/02 02:13
33F:→ KeySabre: 定義先搞懂 1.final 2.gc 03/02 10:12
34F:推 gpc: 有reference不會被清掉 應該是偶發邏輯錯誤 03/02 15:26
35F:推 lovelycateye: 發問不附code,此風不可長。有code有真相啦 03/03 01:15







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP