admin管理员组文章数量:1565370
miui7开发版中,休眠状态下AlarmManager定时广播会失效,网络连接会出错。
在AlarmManager中设置每隔一小时周期发送广播,设置后能在adb shell中看到。但一般在经过一个周期之后,再次adb shell中查看,就发现alarmmanager中已经没有装订好的广播了。难道是被os自行取消了?我的手机os是miui7 5.10.8开发版 android 5.1。
装订后,在adb shell看到的形式一般如下,
RTC #2: Alarm{3a928873 type 1 when 1446138667081 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的定义如下,
ADD 1:
我在开发者选项中设置了不锁定屏幕,这样在充电中手机就不会休眠。从中午开始到现在,可以发现AlarmManager运行良好,并没有出现定时广播消失的情况…………看来只能明早起来再看,手机在休眠状态下,定时广播是不是会消失。另外,我已经严重怀疑这是miui的锅,在这过程中我大概找到了另一个让人莫名其妙的bug的出现原因。
ADD2
上午再次在adb shell中查看,定时广播果然没了……看来只要待机时间一长,定时广播就会被取消,实在让人费解。
ADD3
让人帮忙在别的手机上试下,定时更新数据正常,看来这是miui的坑了。
另外还有一个坑。在我app中,本来是想定时发送广播唤起后台服务,然后下载数据。我发现即使AlarmManager正常工作,唤醒后台服务之后,下载必然会报错,
10-30 13:46:37.929 26642-26673/com.example.weathertrack W/System.err: java.ConnectException: failed to connect to api.thinkpage/115.29.232.24 (port 443) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at libcore.io.IoBridge.isConnected(IoBridge.java:238)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:171)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:122)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at java.PlainSocketImpl.connect(PlainSocketImpl.java:183)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at java.PlainSocketImpl.connect(PlainSocketImpl.java:456)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at java.Socket.connect(Socket.java:882)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.internal.Platform$Android.connectSocket(Platform.java:190)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.Connection.connectSocket(Connection.java:196)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.Connection.connect(Connection.java:172)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:367)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:245)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.Call.getResponse(Call.java:267)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.Call.access$100(Call.java:34)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.Call$AsyncCall.execute(Call.java:162)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at com.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at java.lang.Thread.run(Thread.java:818)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: Caused by: android.system.ErrnoException: isConnected failed: ECONNREFUSED (Connection refused)
10-30 13:46:37.939 26642-26673/com.example.weathertrack W/System.err: at libcore.io.IoBridge.isConnected(IoBridge.java:223)
10-30 13:46:37.939 26642-26673/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
但是无法确认是不是小米网络助手的问题,因为即使正常连接,也会返回如上日志。
相关阅读:
mysql limit分页一般查多少页,limit多少才会有性能问题?
怎样理解js回调函数就是异步的?
android 有些手机在activity退出后并不会释放图片资源,我手动释放也不行
Angular中为什么引用属性比变量好?
alter(a==!a)返回值为true,请问a=?
vue.js每次切换路由时无法正确重置滚动位置?
python 字典排序
NSSortDescriptor 应该如何用方法自定义排序规则?
ansible 创建virtulenv 环境
aceEditor 这段代码的作用?
angular中用ng-if、ng-hide、ng-show等在页面上加了一堆逻辑,真的好吗?
如何避免移入子级时触发父级的onmouseout事件?
jquery为什么我scroll获取不到offsetTop呢,只有window可以获取到呢?
关于CSS HACK的一张图的问题。
逐行显示js问题
PHP向mysql中写数据,在phpmyadmin中为空,直接打印有数据?
js正则不支持持后瞻的问题
微信开发中的疑惑。关于access_token
环形进度条,制作方法不限
python下载验证码以及post登录遇到的问题--模拟登陆实战
版权声明:本文标题:android 广播出错,android,miui_miui7开发版中,休眠状态下AlarmManager定时广播会失效,网络连接会出错。,android,miui - phpStudy... 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727029213a1094648.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论