能看到这篇博客的人,我也就不解释为什么AlarmManager在小米手机上失效的问题了。其实呢,这个问题的解决办法也不是我自己闭门苦想想出来的,也是别人提醒再加上自己查找资料得出的解决办法,如果作者见到类似的代码还请不要见怪,方法不是最优的,但是可以提供一个解决思路。

首先Android有一个广播是Intent.ACTION_TIME_TICK   这个是系统时间每分钟变化会发一个广播出来,先定义一个广播,

其次定义一个后台服务,尽量保证不死,然后在服务创建的时候注册这个广播,在服务销毁的时候注销这个广播就可以了。

在服务创建的时候获取电源锁,防止cpu sleep保证服务运转。

下面是部分代码:

TimeTickReceiver.java

public class TimeTickReceiver extends BroadcastReceiver{
private boolean flag;
@Override
public void onReceive(Context arg0, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_TIME_TICK)) {
//每过一分钟 触发
} else {
/*
* 系统bug
* android.intent.action.TIME_SET  当调整系统时间后 这个action会收到两次
*/
if (flag) {
try {
/*  do some thing */
System.out.println("系统当前时间:"+System.currentTimeMillis());
} catch (Exception e) {
e.printStackTrace();
}
flag = false; //第二次置false
} else {
flag = true; //第一次置true
}

}
}
}

KeepAliveService.java

public class KeepAliveService extends Service{
private static final String TAG = "KeepAliveService.this";
//监听时间变化的 这个receiver只能动态创建
private TimeTickReceiver mTickReceiver;
private IntentFilter mFilter;
@Override
public void onCreate() {
super.onCreate();
System.out.println("服务创建.....");
mFilter = new IntentFilter();
mFilter.addAction(Intent.ACTION_TIME_TICK); //每分钟变化的action
mFilter.addAction(Intent.ACTION_TIME_CHANGED); //设置了系统时间的action
mTickReceiver = new TimeTickReceiver();
registerReceiver(mTickReceiver, mFilter); 
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
localWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getCanonicalName());
if(!localWakeLock.isHeld()){
localWakeLock.acquire();// 申请设备电源锁
}
}

@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
}

@Override
public void onDestroy() {
super.onDestroy();
System.out.println("服务销毁");
unregisterReceiver(mTickReceiver);

if (localWakeLock !=null&& localWakeLock.isHeld()) {
localWakeLock.setReferenceCounted(false);
localWakeLock.release();
localWakeLock =null;
}
}

}

AndroidManifest.xml

<receiver
            android:name="com.test.nodie_service.receiver.TimeTickReceiver" >
            <intent-filter android:priority="1000" >
                <action android:name="android.intent.action.ACTION_TIME_TICK" />
            </intent-filter>
        </receiver>

关于小米手机AlarmManager的问题相关推荐

  1. Android 弱网测试(小米手机切换3g和2g)

    Android 弱网测试,目前主要的是4g 弱网的话我们可以使用3g和2g 对app 进行测试 现在以小米手机为例 我们测试不同网络下的加载情况 第一步 第二步 第三步: 然后我们就可以根据不同的网络 ...

  2. drx功能开启后_简单实用!小米手机中这些新功能真香

    小米手机作为国产机热销品牌之一,它除了有好看的外观,还有很多隐藏的实用功能,今天小编就来和大家分享5个小米手机里你不知道的功能. Al电话助理 看到陌生号码时,很多人第一反应就是挂掉,不想接听,但又担 ...

  3. 小米手机无法连接eclipse调试案例

    按照参考博客2的方法 小米2S手机在Eclipse真机调试时,设备选择列表无法显示手机,DDMS也连接不上设备,解决步骤: 1.打开手机设置中开发者选项 - USB调试开启: 2.保证小米2S手机Wi ...

  4. layer 弹不出来_红米k20pro摄像头弹不出来怎么办?昆明小米手机维修教你解决

    Redmi K20 Pro是小米公司Redmi品牌手机的产品,搭载高通骁龙855处理器,采用了弹出式镜头设计,配上6.39英寸三星AMOLED屏幕及屏下指纹,今天顾客拿来一部红米k20pro,描述手机 ...

  5. 小米手机怎么用计算机,小米手机怎么连接电脑,详细教您小米手机连接电脑

    现在使用手机跟电脑的用户那么多,相信对于手机连接电脑,不会有人陌生,因为很多的用户会经常让两者连接,可是不同型号的手机,其连接方式也是会不一样的,那么小米手机怎么连接电脑呢?下面,小编就来跟大家讲解小 ...

  6. 小米手机 DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs

    手机:小米2s,MIUI 9 7.11.16 开发版 手机已处于开发者模式,启用了USB调试,已使用USB线连接了手机,在Android Studio 工具栏点击 "Run 'app'(Sh ...

  7. 解决小米手机缩放窗口问题

    使用机型 小米手机6 版本号 V8.2.23.0.NCACNEC 复现概率 100% ROM版本 稳定版 问题描述 权限管理里面只有 悬浮窗设置,按照以前一些人说法先允许后拒绝就好了,但是这样设置后, ...

  8. 解决小米手机无法收到开机广播的问题

    2019独角兽企业重金招聘Python工程师标准>>> 今天在做个推推送的时候遇到了小米手机无法收到开机广播的问题. <receiver android:name=" ...

  9. 小米6关闭位置服务器,关闭这6个设置,让你的小米手机从回青春,再战3年

    1.自动下载 2.后台进程 除此之外我们还可以对后台的进程数量进行限制,例如将其限制为2-4个,这样就完全不用担心由于后台应用开启的数量过多,导致手机发生卡顿的问题了. 3.用户数据 很多小伙伴可能觉 ...

最新文章

  1. 5G:这次中国说了算!
  2. 《转载》IOS高级开发~开机启动无限后台运行监听进程
  3. 调试内存_C/C++程序调试和内存检测
  4. u盘读写测试_如何提高u盘读写速度 提高u盘读写速度方法【详细步骤】
  5. 如何系统学习机器学习?
  6. PXC集群常见错误(一)
  7. 从流水中倒推算出销量为多某值的日期
  8. 自从用了这几个网站后,linux下的开发(使用)更加简单化
  9. 十面阿里Java程序员终拿下阿里P6offer
  10. pandas dataframe创建_Python数据分析基础之Pandas学习 (上)
  11. 数据类型的内置方法:元组
  12. Python脚本控制的WebDriver 常用操作 十八 获取测试对象的css属性
  13. 奥迪坚受邀参加银联数据2016年度客服云平台专题研讨会
  14. 物料编码的制定(资料收集)
  15. VUE Element-ui 图标加载失败问题 Failed to decode downloaded font : woff ttf
  16. 安全狗下一代网站防篡改产品全面支持容器防篡改
  17. Sqlite 索引的使用、索引的优缺点
  18. NVM(NonVolatile Memory)(非易失性内存)
  19. 二值化轮廓图像轮廓点坐标顺时针获取matlab程序
  20. 1688API详情接口调用展示

热门文章

  1. DIY大神评测:联想拯救者r7000p配置参数评测-联想拯救者R7000和R7000P区别哪个好
  2. ireport(jasper)打印excel时列对不上
  3. Docker内运行ROS(melodic版本)以及使用Rviz
  4. 音频怎么提取?提取音频其实很好上手
  5. php后端和php前端的区别,前端和后端之间有什么区别
  6. PTA--基础编程题目集(7-5 表格输出) Python版
  7. 达摩院特别版·趣味视觉AI训练营--Class5-10分钟开发一款“一键二次元化“AI小程序
  8. Raspberry Pi入门
  9. 动物识别专家系统 Java 简单实现
  10. 完美日记母公司再度携手中国妇基会,以“创美人生”助力女性成长