[問題] 多個Activity切換時 不onDestroy消失

看板AndroidDev作者時間8年前 (2017/07/28 18:34), 編輯推噓1(1011)
留言12則, 6人參與, 最新討論串1/1
我目前的APP流程是這樣: 起始畫面(一張圖)→ActivityA 有另外四個 Activity 分別是:ActivityB、ActivityC、ActivityD、ActivityE 然後 ActivityA~E 都可以互相切換 不會關閉 如果跳轉流程是這樣:A→B→C→D→E→C C 不會重新 onCreate 而是 onRestart 每個 Activity 都會去資料庫拿不同資料 存成ArrayList 來建置當前的頁面 但是因為 ActivityB 的資料量很大的關係 所以從 ActivityA→ActivityB 的時候 畫面就會讀取一段時間(大概2~3秒) 正常來講 第一次進入 ActivityB 讀取久一點沒關係 但是每次進入 ActivityB 的時候都會重新 onCreate 造成讀取 會造成使用者煩躁 所以想說 如果已經開啟過 ActivityB 然後切換到其他 Activity 的時候 不要 finish ActivityB 這樣下次進入 ActivityB 的時候就不用重新 onCreate 了 我目前的做法是: 跳轉指令都用 startActivity(new Intent(this, ActivityB.class)); (不 call finish();) 接著在 AndroidManifest.xml 的地方 將 ActivityA~E 加上 android:launchMode="singleTask" 原本是沒問題的 但是加上讀取資料庫 數量太大的時候(大約一萬多筆) 從 ActivityB→ActivityA 之後 ActivityB 馬上就跳出 onDestroy 了 然後再從 ActivityA→ActivityB 又要讀取了… 這樣該怎麼實現這個功能? 或是有其他最佳化讀取的方法嗎? 抱歉我的想法很奇怪 懇請大家解惑 -- By ALi Project グランギニョル                仏語で「操り人形」または「人形劇」を指す。       普通は19世紀末のパリに実在した劇場「グラン・ギニョル座」を指す。  この劇場では人形の代わりに人間が出演し,残酷でエロチックな恐怖劇を演じた。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.222.191.73 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1501238096.A.467.html

07/28 19:24, , 1F
應該是解決一口氣撈一萬多筆數據問題,
07/28 19:24, 1F

07/28 19:24, , 2F
你應該沒有一次就要呈現一萬多筆數據吧
07/28 19:24, 2F

07/28 19:24, , 3F
螢幕放不下也無法一次看這麼多筆
07/28 19:24, 3F

07/28 19:44, , 4F
一般是放singleton比較好吧
07/28 19:44, 4F

07/28 20:35, , 5F
你所謂很慢的功能 都該弄成服務 Activity就專注於把東西顯示
07/28 20:35, 5F

07/28 20:35, , 6F
出來跟使用者互動 這才是適當的做法阿
07/28 20:35, 6F

07/28 20:37, , 7F
如果覺得服務太複雜 就放在Application物件上 也是個辦法
07/28 20:37, 7F

07/28 22:25, , 8F
第一次load完後,存放在一個singleton物件,下次load就
07/28 22:25, 8F

07/28 22:25, , 9F
只要檢查diff就好
07/28 22:25, 9F

07/29 15:26, , 10F
資料可以分頁,不用全部一次讀出
07/29 15:26, 10F

07/29 15:28, , 11F
這樣讀取速度比較快,也比較不容易把記憶體用滿擠掉別人
07/29 15:28, 11F

07/31 18:42, , 12F
好吧 我朝向分頁讀取資料的方向去做好了 這樣也比治本
07/31 18:42, 12F
文章代碼(AID): #1PUnDGHd (AndroidDev)