小米安卓alarm唤醒manager和service后台唤醒cpu连接服务失败

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
在AlarmManager中设置每隔一小时周期发送广播,设置后能在adb shell中看到。但一般在经过一个周期之后,再次adb shell中查看,就发现alarmmanager中已经没有装订好的广播了。难道是被os自行取消了?我的手机os是miui7 5.10.8开发版 android 5.1。装订后,在adb shell看到的形式一般如下,
RTC #2: Alarm{3a928873 type 1 when 1 com.example.weathertrack}
tag=*alarm*:com.example.weather.WAKEUP
operation=PendingIntent{b5186f4: PendingIntentRecord{3d8cfe1d com.example.weathertrack broadcastIntent}}
u0a233:com.example.weathertrack +1s109ms running, 0 wakeups:
+1s109ms 0 wakes 2 alarms: *alarm*:com.example.weather.WAKEUP
设置alarmmanager的代码如下,
public static void sendBroadcast(Context context) {
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
long setTime = 1000 * 3600;
Intent intent = new Intent(context, WakeUpApp.class);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.setAction("com.example.weather.WAKEUP");
PendingIntent pendingIntent = PendingIntent
.getBroadcast(context, 1562, intent, PendingIntent.FLAG_UPDATE_CURRENT);
manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 * 60, setTime, pendingIntent);
在AndroidManifest中receiver的定义如下,
&receiver android:name=".receiver.WakeUpApp"&
&intent-filter&
&action android:name="com.example.weather.WAKEUP"/&
&/intent-filter&
&/receiver&
ADD 1:我在开发者选项中设置了不锁定屏幕,这样在充电中手机就不会休眠。从中午开始到现在,可以发现AlarmManager运行良好,并没有出现定时广播消失的情况…………看来只能明早起来再看,手机在休眠状态下,定时广播是不是会消失。另外,我已经严重怀疑这是miui的锅,在这过程中我大概找到了另一个让人莫名其妙的bug的出现原因。ADD2上午再次在adb shell中查看,定时广播果然没了……看来只要待机时间一长,定时广播就会被取消,实在让人费解。ADD3让人帮忙在别的手机上试下,定时更新数据正常,看来这是miui的坑了。另外还有一个坑。在我app中,本来是想定时发送广播唤起后台服务,然后下载数据。我发现即使AlarmManager正常工作,唤醒后台服务之后,下载必然会报错,
10-30 13:46:37.929 /com.example.weathertrack W/System.err: java.net.ConnectException: failed to connect to /115.29.232.24 (port 443) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at libcore.io.IoBridge.isConnected(IoBridge.java:238)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at libcore.io.IoBridge.connectErrno(IoBridge.java:171)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at libcore.io.IoBridge.connect(IoBridge.java:122)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:456)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at java.net.Socket.connect(Socket.java:882)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.internal.Platform$Android.connectSocket(Platform.java:190)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.Connection.connectSocket(Connection.java:196)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.Connection.connect(Connection.java:172)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:367)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:245)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.Call.getResponse(Call.java:267)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.Call.access$100(Call.java:34)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.Call$AsyncCall.execute(Call.java:162)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at com.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at java.lang.Thread.run(Thread.java:818)
10-30 13:46:37.939 /com.example.weathertrack W/System.err: Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
at libcore.io.IoBridge.isConnected(IoBridge.java:223)
10-30 13:46:37.939 /com.example.weathertrack W/System.err:
... 21 more
看日志第一行,我查过之后发现这个错误一般是因为服务器端出错造成的。但是在我这个例子中肯定不是网站服务器的问题,每次只要我在打开app的情况下手动更新数据,就能正常下载数据。另外,今天下午别人的测试反馈也是软件定时更新数据正常。我在adb shell中查看了logcat,发现只要开始网络连接,小米内置的网络助手就会监控,
10-30 13:46:37.929 I/XiaomiFirewall(10262): firewall pkgName:com.example.weathertrack, result:0
但是无法确认是不是小米网络助手的问题,因为即使正常连接,也会返回如上日志。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
miui的话 是不是所谓的对齐唤醒的原因导致的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
小米有神隐模式,后台应用会被限制网络访问权限,设置-其他高级设置-电量和性能-神隐模式...
求MIUI的Android6.0手机后台无法保活的解决方案
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要举报该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知问题:MiUI AlarmManager 延迟
描述:最近帮朋友做个闹钟的应用, 自己用的小米手机, 随手拿来测试, 发现每次闹钟都会有5分钟以内的随机的延迟, 折腾了好久才发现是 MIUI 对Android 本身的AlarmManager做了限制, 为了省电, 每5分钟做一次检查.javaAlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Log.d("AlarmModel", "alarm will wakeup in seconds: " + getAlarmTime().getTimeInMillis());
alarmManager.set(AlarmManager.RTC_WAKEUP, getAlarmTime().getTimeInMillis(), pendingIntent);
但是用的正点闹钟之类的第三方APP, 完全都是准时响铃的, 所以很好奇他们的解决方案, 求解答解决方案1:正点闹钟在13年的时候也遇到过这种问题,后来是和miui团队沟通后解决的,(应该是后台给了api的源码),好不爽!解决方案2:你调用setExact()试一下应该是可以做到准时的解决方案3:灰常反感小米这种对API的大改,只会增加开发难度,破坏平台统一性解决方案4:小米在 Google官方 之前引入了 “对齐唤醒” 机制,以下是可能的解决办法(Google搜索结果,并未测试)链接描述对于小米这种看似有利用户,实则破坏 Android 生态的行为,个人表示抵制解决方案5:正点闹钟会默认添加到自启动列表,因此可以正常唤醒。
以上介绍了“MiUI AlarmManager 延迟”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/1324677.html
上一篇: 下一篇:经验1995 米
在线时间265 小时
版本5.1.10
积分 2340, 距离下一级还需 2660 积分
积分 2340, 距离下一级还需 2660 积分
机型红米手机1S WCDMA 3G版
签到次数40
MIUI版本5.1.10
Screenshot_-08-02-26.png (171.33 KB, 下载次数: 0)
Screenshot_-08-02-19.png (120.94 KB, 下载次数: 0)
待机9个多小时,AlarmManager在唤醒模式下呆了8个多小时
遇到的人越多,MIUI开发组会越关注
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验23565 米
威望441 米
在线时间1019 小时
我只是个吃货……
机型Sony LT26i
签到次数35
MIUI版本6.4.5
这个是一个闹钟管理程序
经验1995 米
在线时间265 小时
版本5.1.10
积分 2340, 距离下一级还需 2660 积分
积分 2340, 距离下一级还需 2660 积分
机型红米手机1S WCDMA 3G版
签到次数40
MIUI版本5.1.10
.....官方原版...CM10都没事....
你这回复太敷衍了
经验23565 米
威望441 米
在线时间1019 小时
我只是个吃货……
机型Sony LT26i
签到次数35
MIUI版本6.4.5
安卓后台管理原理真心复杂
别经常清理
经验1995 米
在线时间265 小时
版本5.1.10
积分 2340, 距离下一级还需 2660 积分
积分 2340, 距离下一级还需 2660 积分
机型红米手机1S WCDMA 3G版
签到次数40
MIUI版本5.1.10
我现在也在学安卓和linux内核....
我都不清理内存的......
经验293 米
在线时间27 小时
版本3.10.18
积分 331, 距离下一级还需 169 积分
积分 331, 距离下一级还需 169 积分
机型小米手机2/2S
签到次数22
MIUI版本3.10.18
AlarmManager唤醒这个问题貌似在MIUI尤其突出。
在线时间16 小时
版本4.3.28
积分 89, 距离下一级还需 111 积分
积分 89, 距离下一级还需 111 积分
机型Google Galaxy Nexus
MIUI版本4.3.28
alarmmanager是系统的定时服务,用来先应用层提供定时,需要长期处于活动状态,就是时钟频率一样 你禁止了它 系统程序,或者第三方程序怎么设定时间定时启动。
1000万用户纪念勋章
MIUI1000万用户纪念勋章
关注新浪微博
已关注新浪微博
MIUI 100周
100周发布纪念勋章
MIUI 3000万
MIUI 3000万发烧友纪念勋章
MIUI 2000万
MIUI 2000万发烧友纪念勋章
小米手机2终身荣誉勋章
小米手机2终身荣誉勋章
MIUI三周年
MIUI三周年纪念勋章
百万壁纸评审纪念勋章
已关注微信
已关注极客秀微信
关注腾讯微博
已关注腾讯微博
MIUI俱乐部发烧友
MIUI俱乐部发烧友
Copyright (C) 2016 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号问题:关于Alarmmanager计时不准的问题
尤其是小米手机上,在系统休眠状态下,经常出现计时广播被延迟,不知道如何解决,望高手指点一下,要在手机上实现一个一个小时左右,间隔10分钟的倒计时怎么做?解决方案1:
小米的alarm服务是被修改过的,不一定会按照你设定的RTC_WAKEUP唤醒时间来唤醒系统。
你可以试着用一用小米的关机闹钟RTC定时器,但是在设置定时器类型时就不一定是AlarmManager.RTC_WAKEUP了,这个数字建议你去猜测或是试一试,说不定会有意外的收获。
以上介绍了“关于Alarmmanager计时不准的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/671867.html
上一篇: 下一篇:在线时间0 小时
积分 31, 距离下一级还需 19 积分
积分 31, 距离下一级还需 19 积分
机型小米手机2/2S
最近写了个闹钟程序,使用的是AlarmManager的RTC_WAKEUP来唤醒系统并调用相应的Activity
模拟器上测试没有任何问题,使用小米2S的实机测试却发现唤醒时间有很大的延迟,请问是哪里的问题?另外,使用RTC就会很准确,但是这样就无法唤醒系统,闹钟就没有意义了。
Calendar cal = Calendar.getInstance();& && &&&
// 在当前时间上增加2秒& && &&&
cal.add(Calendar.SECOND, 2);& && &&&
long timeMillis= cal.getTimeInMillis();& && &&&
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);& && &&&
Intent intent = new Intent();& && &
intent.setAction(AlarmPage.ACTION);& && &&&
PendingIntent pi = PendingIntent.getActivity(ListPage.instance, 0 , intent, 0);& && &&&
manager.set(AlarmManager.RTC_WAKEUP, timeMillis, pi);
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验312 米
在线时间5 小时
积分 407, 距离下一级还需 93 积分
积分 407, 距离下一级还需 93 积分
机型华为 Honor 2
坐等技术员来解决吧,版主不知道会不
经验10001 米
在线时间1530 小时
版本5.9.21
EXM-MIUI-DEV
机型Google Nexus 5
签到次数39
MIUI版本5.9.21
据说是因为现在为了省电要求,系统对唤醒请求是五分钟检查一次。所以会产生延迟
在线时间0 小时
积分 31, 距离下一级还需 19 积分
积分 31, 距离下一级还需 19 积分
机型小米手机2/2S
那这功能不是完全没意义了么……QAQ
经验10001 米
在线时间1530 小时
版本5.9.21
EXM-MIUI-DEV
机型Google Nexus 5
签到次数39
MIUI版本5.9.21
貌似后面会修正的,app的唤醒 采用 限制次数的方式,而不是 限制 唤醒时间对齐到五分钟
已有&1&人评分
助人为乐^_^
在线时间0 小时
积分 31, 距离下一级还需 19 积分
积分 31, 距离下一级还需 19 积分
机型小米手机2/2S
在线时间0 小时
版本3.11.15
积分 53, 距离下一级还需 147 积分
积分 53, 距离下一级还需 147 积分
机型小米手机2/2S
MIUI版本3.11.15
我现在也遇到了这个闹铃定时器延时问题,急需解决
在线时间0 小时
积分 18, 距离下一级还需 32 积分
积分 18, 距离下一级还需 32 积分
我也碰到这问题了。蛋疼
在线时间1 小时
版本3.8.26
积分 46, 距离下一级还需 4 积分
积分 46, 距离下一级还需 4 积分
机型小米手机1/1S
MIUI版本3.8.26
我去···原来真的是小米2s搞的鬼·· 我的小米1都没问题 同样是miui v5 只不过一个是稳定版 一个是开发版。 2s上我的间隔时间设置的是30秒 但是不管你怎么样设置 都会有非常大的延迟 有时候2分钟 有时候4分钟或更长。
在线时间1 小时
版本3.8.26
积分 46, 距离下一级还需 4 积分
积分 46, 距离下一级还需 4 积分
机型小米手机1/1S
MIUI版本3.8.26
唤醒对齐到5分钟 很变态 我的app要用这个做心跳或者简单的轮询就没戏了。CPU休眠的时候想要定时做一些操作肿么办,也不为开发者想想。
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI三周年
MIUI三周年纪念勋章
MIUI俱乐部发烧友
MIUI俱乐部发烧友
Copyright (C) 2016 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号}

我要回帖

更多关于 alarmmanagerservice 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信