我有一个主要活动和一项服务。主要活动为服务准备数据。服务消费完数据后,它向mainactivity广播一个请求,mainactivity准备一些新数据并传递给服务......
mainactivity 允许用户操作数据。如果 mainactivity 不在前台,有时它会被杀死。
【问题1】:这里有点迷糊,我觉得mainactivity还在,但是它的UI线程和view被清空了?所以我不能使用 UI 线程从视图中读取值,然后将数据发送到服务?
[问题2]:如何检测到mainactivity被杀死,然后服务可以切换到自己准备数据?
【问题3】:如何强制系统“杀”?主要活动,所以我可以调试程序?
谢谢
更新:我可能会读到该图表,但我仍然无法完全理解这种行为。实际上,我的问题更像是这样的:从任务管理器中,我的应用程序有 1 个活动和 1 个服务,并消耗了 20MB 内存。半小时后,我的应用程序有 1 个活动和 1 个服务并消耗了 1.5MB 内存。显然,活动发生了一些事情,那是什么?请注意:我的活动使用 UI 线程循环来准备要服务的数据。停止/恢复对活动的 UI 线程没有影响,那么我怎么知道 UI 线程活动何时会被杀死?
更新:我使用 logcat 进行了测试,(在调用 onpause/onstop/ondestroy 时添加日志消息..),但是,当应用程序内存从 20mb 下降到 1.5mb 时,没有调用任何消息。
05-21 23:33:27.709: I/mytag(32012): 调用 onResume
05-21 23:33:30.606: I/mytag(32012): 调用 onPause
05-21 23:33:31.596: I/mytag(32012): 调用 onStop
[到目前为止,应用程序管理器显示我的应用程序使用 20mb 内存]
05-21 23:36:05.176: D/skia(32012): 从字体缓存中清除 144K [8 个条目]
05-21 23:36:05.246: D/dalvikvm(32012): GC_EXPLICIT 释放 1240K,52% 释放 4329K/8839K,外部 1716K/2137K,暂停 54ms
05-22 00:00:10.226: D/dalvikvm(32012): GC_EXPLICIT 释放 933K, 53% 释放 4226K/8839K, 外部 1684K/2137K, 暂停 85ms
05-22 00:36:10.166: D/dalvikvm(814): GC_EXPLICIT 释放 56K, 49% 释放 2775K/5379K, 外部 1625K/2137K, 暂停 61ms
[到目前为止,应用程序管理器显示我的应用程序使用 1.5mb 内存]
我等了半个小时,我没有再收到任何 logcat 文本,测试结束。
我想检测系统清除我的应用程序内存,但它不会触发任何“onpause、/onstop 等”,我如何检测它,然后告诉服务做某事?谢谢