标签: android-activityrecord

ActivityRecord的活动空闲超时

所以我有一个奇怪的问题,我不完全确定我应该提供的所有信息,但我会尽我所能 - 如果我需要添加更多信息,请告诉我.我有,当我完成我的一个问题Activity,并返回到前一个Activity(或一个新的启动它Intent-这个问题似乎在整理为中心Activity)的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}
Run Code Online (Sandbox Code Playgroud)

一旦活动超时,UI性能就会恢复正常.在那之前,它非常缓慢.我没有可以阻止主线程的代码,我甚至已经注释掉了我的整个onPause()方法,看它是否有任何区别,但事实并非如此.

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

任何想法会导致什么?或者我如何确定阻止UI线程的内容,如果发生了什么?

编辑:好的,只是尝试注释掉除super.onCreate()和setContentView()之外的所有内容 - 问题仍然存在.它不与任何其他活动,但这个发生,但有什么可这一个.:/

performance android android-activity android-activityrecord

9
推荐指数
1
解决办法
2万
查看次数

如何避免"ActivityRecord"的"活动暂停超时"错误?

WAY1:

@Override
protected void onPause() {
    super.onPause();
    // do something urgent
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

WAY2:

@Override
protected void onPause() {
    // do something urgent
    doSomething();
    super.onPause();
}
Run Code Online (Sandbox Code Playgroud)

所不同的是调用顺序doSomething()super.onPause().当我使用WAY1时,如果doSomething()成本太高,我会得到错误:W/ActivityManager( 4347): Activity pause timeout for ActivityRecord.

pause timeout如果我使用WAY2,我会避免错误吗?

我检查了AOSP,但是我很难理解Activity的调用过程.

android android-activity android-activityrecord

7
推荐指数
1
解决办法
1万
查看次数