zoukankan      html  css  js  c++  java
  • 在设定alarm时,通过Intent传输数据出现旧数据删除不掉的问题。

    偶在做项目时需要在Service中动态创建定时任务。碰到了几个问题在这里和大家交流下,如果有不对的地方请大家指出,谢谢。

    1.创建多个定时器时通过Bundle传输数据发现会保留旧的数据。

       比如先定义两个任务待执行完后重新打开软件再定义两个,这时发现收到的第一个任务传输的值是第一次中第2个任务的数据。

    2.在创建Intent时 setAction  后发现不能取消定时器。

    在处理上面第一个问题时在网上找个资料说需要每次setAction下,照做后发现的确可以解决这个问题。请注意setAction 这行。

     1 /**
    2 * @param alarm 定时
    3 * @param bundle 要传的值 类似于MAP  
    4 * @param time 任务启动时间
    5 * @param code 任务编号
    6 */
    7 private void createAlarm(AlarmManager alarm,Bundle bundle,long time,int code){
    8 Intent intent = new Intent(this,PlayActivity.class);
    9 intent.setAction(String.valueOf(System.currentTimeMillis()));
    10 intent.putExtra(Constants.PM_DATA_KEY,bundle);
    11 PendingIntent pendingIntent = PendingIntent.getActivity(this,code, intent,0);
    12 alarm.set(AlarmManager.RTC_WAKEUP, time,pendingIntent);
    13 }

    但这里引出了第二个问题,然后再经过查找资料发现在设置PendingIntent时修改最后一个参数为PendingIntent.FLAG_UPDATE_CURRENT,然后注释掉setAction,奇怪了两个问题都好了。

    修改后代码,注意PendingIntent这行:

     1 /**
    2 * @param alarm 定时
    3 * @param bundle 要传的值 类似于MAP  
    4 * @param time 任务启动时间
    5 * @param code 任务编号
    6 */
    7 private void createAlarm(AlarmManager alarm,Bundle bundle,long time,int code){
    8 Intent intent = new Intent(this,PlayActivity.class);
    9 //intent.setAction(String.valueOf(System.currentTimeMillis()));
    10 intent.putExtra(Constants.PM_DATA_KEY,bundle);
    11 PendingIntent pendingIntent = PendingIntent.getActivity(this,code, intent,PendingIntent.FLAG_UPDATE_CURRENT);
    12 alarm.set(AlarmManager.RTC_WAKEUP, time,pendingIntent);
    13 }
  • 相关阅读:
    ToDesk 远程连接软件 连接远程电脑后黑屏
    Kentico updateall
    Stylesheet not loaded because of MIME-type
    Linux tail 命令作用及其常用用法
    浅析Linux中stty命令的作用、常用用法及案例使用
    【MySQL】修改表的存储引擎
    【MySQL】查看MySQL的默认存储引擎(Win环境)
    【Swing/STS】在Spring Tool Suite中制作可执行jar
    [Swing]我的作品 图片幻灯式浏览软件PicturesShow 献给广大美图爱好者的福音
    【Java Swing】如何给Jframe添加键盘和鼠标事件处理
  • 原文地址:https://www.cnblogs.com/coacaio/p/2312256.html
Copyright © 2011-2022 走看看