求原因:广播中出现了ANR异常,接收的屏幕点亮广播android.intent.action.SCREEN_ON

android_baiyuchuan 2012-08-16 01:58:25
08-02 14:55:31.760: E/ActivityManager(1351): ANR in com.android.bai
08-02 14:55:31.760: E/ActivityManager(1351): Reason: Broadcast of Intent { act=android.intent.action.SCREEN_ON flg=0x40000010 }
08-02 14:55:31.760: E/ActivityManager(1351): Load: 0.45 / 0.89 / 0.77
08-02 14:55:31.760: E/ActivityManager(1351): CPU usage from 12373ms to 3359ms ago:
08-02 14:55:31.760: E/ActivityManager(1351): 0.5% 1351/system_server: 0.3% user + 0.2% kernel / faults: 61 minor
08-02 14:55:31.760: E/ActivityManager(1351): 0.4% 1442/com.android.systemui: 0.3% user + 0.1% kernel / faults: 10 minor
08-02 14:55:31.760: E/ActivityManager(1351): 0.4% 2230/adbd: 0.1% user + 0.3% kernel / faults: 31 minor
08-02 14:55:31.760: E/ActivityManager(1351): 0.4% 3994/com.android.bai: 0.3% user + 0.1% kernel / faults: 10 minor
08-02 14:55:31.760: E/ActivityManager(1351): 0.2% 1085/yaffs-bg-1: 0% user + 0.2% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 0.2% 3100/dhd_watchdog: 0.2% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 0.2% 4032/com.huawei.phoneplus:pushservice: 0% user + 0.2% kernel / faults: 3 minor
08-02 14:55:31.760: E/ActivityManager(1351): 0% 1182/surfaceflinger: 0% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 0% 1519/com.huawei.inputmethod.hwpal: 0% user + 0% kernel / faults: 9 minor
08-02 14:55:31.760: E/ActivityManager(1351): 0% 1804/com.huawei.android.dmclient: 0% user + 0% kernel / faults: 33 minor
08-02 14:55:31.760: E/ActivityManager(1351): 0% 2476/com.wandoujia.phoenix2: 0% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 1.4% TOTAL: 0.8% user + 0.5% kernel
08-02 14:55:31.760: E/ActivityManager(1351): CPU usage from 649ms to 1170ms later:
08-02 14:55:31.760: E/ActivityManager(1351): 7.8% 4032/com.android.bai:pushservice: 3.1% user + 4.6% kernel / faults: 53 minor
08-02 14:55:31.760: E/ActivityManager(1351): 6.2% 4052/ReceiverDispatc: 1.5% user + 4.6% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 3.1% 4034/GC: 3.1% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 5.7% 1351/system_server: 3.8% user + 1.9% kernel / faults: 1 minor
08-02 14:55:31.760: E/ActivityManager(1351): 3.8% 1367/ActivityManager: 0% user + 3.8% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 1.9% 1362/Binder Thread #: 1.9% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 1.9% 1517/Binder Thread #: 1.9% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 1.9% 1721/Binder Thread #: 1.9% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 1.9% 5526/Binder Thread #: 1.9% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 1.4% 3100/dhd_watchdog: 1.4% user + 0% kernel
08-02 14:55:31.760: E/ActivityManager(1351): 21% TOTAL: 9.6% user + 11% kernel


接收广播时没有什么异常操作,只是将这个屏幕点亮事件以preference形式存储到了XML文件中。而且SCREEN_ON也是以动态注册的。
SharedPreferences preference = context.getSharedPreferences("reportLog", Context.MODE_MULTI_PROCESS);
...全文
4262 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjavadan 2013-07-10
  • 打赏
  • 举报
回复
请问楼主你是说是别的应用程序调用你的com.android.bai 这个应用程序导致anr的吗?并且第三方应用是如何调用你的应用程序的?
  • 打赏
  • 举报
回复
请问楼主第三方调用你的程序具体是怎么出错的?是因为第三方在接受到SCREEN_ON的广播之后调用你的程序,出现了耗时操作吗? 我现在经常也遇到这种问题,非常头疼,希望求教一下。
android_baiyuchuan 2012-10-15
  • 打赏
  • 举报
回复
问题原因找到了,是因为第三方应用在使用我的程序时,他自身的相应超时导致,不是我的问题···
hvk687 2012-08-16
  • 打赏
  • 举报
回复
1.打个log,看看时间。
2.把commit,改成apply
android_baiyuchuan 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

Java code

new Thread()
{
@Override
public void run()
{
//你的代码
}
}.start();
[/Quote]
这个方式我是知道的,但是我更想知道的是原因,为什么我只是接收一个点亮屏幕的广播就会出现ANR。
另外补充下这个问题:我的程序在一般的手机上跑的都是没有问题的,但是到双卡双待华为T8808手机上就必然出现ANR,百思不得其解。若是因为我的code中出现了问题而导致,虽然在写在run里面,它也不一定执行的完整,那么功能就不是完整的了。


 	SharedPreferences preference = context.getSharedPreferences(
"reportLog", Context.MODE_MULTI_PROCESS);
Editor editor = preference.edit();
if (Intent.ACTION_SCREEN_ON.equals(action)) {

editor.putLong(PushConst.SystemStatus.STR_LAST_SCREEN_ON, System.currentTimeMillis()).commit();

}

外面有try catch。难道是因为手机上的系统不识别Context.MODE_MULTI_PROCESS标示么。
AMinfo 2012-08-16
  • 打赏
  • 举报
回复

new Thread()
{
@Override
public void run()
{
//你的代码
}
}.start();

AMinfo 2012-08-16
  • 打赏
  • 举报
回复
你把收到广播后进行的操作放到一个Thread里面去。

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧