android – ActivityRecord的活动空闲超时

android – ActivityRecord的活动空闲超时,第1张

概述所以我有一个奇怪的问题,我不完全确定我应该提供什么信息,但我会尽我所能 – 只要让我知道,如果我需要添加更多的信息.我有一个问题,当我完成我的活动并返回到上一个活动(或启动它与一个新的意图 – 问题似乎集中在完成活动)UI性能急剧下降大约六七秒,然后恢复正常. 从LogCat,这个警告一直显示: 07-11 22:09:42.594: W/ActivityManager(292): Launch 所以我有一个奇怪的问题,我不完全确定我应该提供什么信息,但我会尽我所能 – 只要让我知道,如果我需要添加更多的信息.我有一个问题,当我完成我的活动并返回到上一个活动(或启动它与一个新的意图 – 问题似乎集中在完成活动)UI性能急剧下降大约六七秒,然后恢复正常.

从LogCat,这个警告一直显示:

07-11 22:09:42.594: W/ActivityManager(292): Launch timeout has expired,giving up wake lock!07-11 22:09:42.601: W/ActivityManager(292): Activity IDle timeout for ActivityRecord{42bf6e00 com.kcoppock.sudokubeta/com.kcoppock.sudoku.SudokuBoardActivity}

一旦活动超时,UI性能恢复正常.直到那时,这是非常缓慢的.我没有代码,我知道这可能阻止主线程,我甚至已经去评论我的整个onPause()方法,看看它是否有所不同,而不是.

活动不产生任何后台线程,不执行任何网络活动,唯一的磁盘访问它是一些访问SharedPreferences.以前我能找到的问题是关于HistoryRecord的空闲超时,而不是ActivityRecord.

任何想法会造成什么?或者我可以如何确定什么是阻止UI线程,如果这是发生了什么?

编辑:好的,只是尝试注释掉除super.onCreate()和setContentVIEw()之外的所有内容 – 问题仍然存在.这不是任何其他活动,而是这一个,但是没有这个. :/

解决方法 哦geez其中一件事情在测试和错误之外很难诊断,但我已经弄清楚了.作为参考,如果任何人有这个问题,它在我的布局中归结为一个自定义视图.我已经添加了一个VIEwTreeObserver.OnGlobalLayoutListener()在布局传递之后进行一些布局修改,但是在该监听器中,我修改了布局,从而导致了另一个布局,基本上创建了一个无限循环(但是不会导致ANR).我的解决方案是这样的:
private class BoardLayoutListener implements OnGlobalLayoutListener {    @OverrIDe    public voID onGlobalLayout() {        //...do stuff here        //REMOVE this Listener so that you don't repeat this forever        VIEwTreeObserver obs = SudokuBoard.this.getVIEwTreeObserver();        obs.removeGlobalOnLayoutListener(this);    }}

这个解决方案很讽刺,考虑到我的second highest rated answer on StackOverflow专门处理这个问题. :P

总结

以上是内存溢出为你收集整理的android – ActivityRecord的活动空闲超时全部内容,希望文章能够帮你解决android – ActivityRecord的活动空闲超时所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1131832.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存