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

作者: gcobc12632 (Ted)   2017-07-28 18:34:53
我目前的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 又要讀取了…
這樣該怎麼實現這個功能?
或是有其他最佳化讀取的方法嗎?
抱歉我的想法很奇怪 懇請大家解惑
作者: benntqoo (This Letter)   2017-07-28 19:24:00
應該是解決一口氣撈一萬多筆數據問題,你應該沒有一次就要呈現一萬多筆數據吧螢幕放不下也無法一次看這麼多筆
作者: jete   2017-07-28 19:44:00
一般是放singleton比較好吧
作者: y3k (激流を制するは静水)   2017-07-28 20:35:00
你所謂很慢的功能 都該弄成服務 Activity就專注於把東西顯示出來跟使用者互動 這才是適當的做法阿如果覺得服務太複雜 就放在Application物件上 也是個辦法
作者: roy870075 (Roy)   2017-07-28 22:25:00
第一次load完後,存放在一個singleton物件,下次load就只要檢查diff就好
作者: ssccg (23)   2017-07-29 15:26:00
資料可以分頁,不用全部一次讀出這樣讀取速度比較快,也比較不容易把記憶體用滿擠掉別人
作者: gcobc12632 (Ted)   2017-07-31 18:42:00
好吧 我朝向分頁讀取資料的方向去做好了 這樣也比治本

Links booklink

Contact Us: admin [ a t ] ucptt.com