[问题] 多个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