我有一个应用程序,该日志打印的内容如下:
GC_CONCURRENT freed 433k,7% free 7975K/8564K,paused 12ms+4ms, total 70ms
如果继续使用它,应用程序工作正常,但是当锁定屏幕时,应用程序有问题。有时屏幕锁定它死后,屏幕锁定后的某个时间延迟10秒后退。我看到日志消息并发现后台内存泄漏引起的UI死亡时服务正常吗?从GC_CONCURRENT
可以看到只有7%的内存是免费的。我想知道我错过了什么。
另一个问题是我使用子类退出活动。当我单击后退按钮时,我调用此代码:
public void exit() {
Log.e(TAG, "exit in myapplication");
for (Activity activity : activityList) {
Log.e(TAG, activity.getLocalClassName()+ " finish");
activity.finish();
}
System.exit(0);
}
但在finish()
完成后,onDestroy活动未被调用。为什么?任何人都会高度赞赏地帮助我。
答案 0 :(得分:0)
你不应该自己管理活动,系统正在处理这个问题。此外,您不应该再次杀死应用程序,这违反了开发人员指南。
那就是说,你的问题肯定来自这样一个事实:你要保持对活动的引用,这会阻止系统破坏它们。简单地坚持推荐的做事方式,Android不是Windows Phone或iOS,你不会杀死应用程序,而是让系统决定何时需要被杀死。
例如,请参阅Reto Meier的文章,Android dev @ Google:When to Include an Exit Button in Android Apps (Hint: Never)