A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a6566983 初级黑马   /  2014-10-26 09:26  /  858 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在android应用编写中,为了不耗系统资源如何实现每分钟更新时间。现在我在用的是线程,但是感觉占用资源
可否使用广播接收器i??
在应用退到后台依然可以时间检测到时间变化。

1 个回复

倒序浏览
用Alrammanager  在里面发送广播  广播启动service  service里面更新时间..

  1. public class AlarmManagerUtil {
  2.        
  3.         public static AlarmManager getInstance(Context context) {
  4.                 return (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
  5.         }
  6.        
  7.         public static void sendBroadCast(Context context) {
  8.                 Intent intent = new Intent(context , AlarmManagerBroadcast.class);
  9.                 intent.setAction("com.alarm.repeat");
  10.                 PendingIntent pen = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  11.                
  12.                 long firstTime = SystemClock.elapsedRealtime();
  13.                 AlarmManager alarmManager= getInstance(context);
  14.                 alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 10*1000, pen);
  15.         }
  16.        
  17.         public static void cancelBroadCast(Context context) {
  18.                 Log.i("yh", "cancelAlram");
  19.                
  20.                 Intent intent = new Intent(context , AlarmManagerBroadcast.class);
  21.                 intent.setAction("com.alarm.repeat");
  22.                 PendingIntent pen = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
  23.                 AlarmManager alarmManager= getInstance(context);
  24.                 alarmManager.cancel(pen);
  25.         }
  26. }
  27. //这个是Alrammanager的
  28. public class AlarmManagerBroadcast extends BroadcastReceiver{
  29.                 @Override
  30.                 public void onReceive(Context context, Intent intent) {
  31.                         String action = intent.getAction();
  32.                         if(("com.alarm.repeat").equals(action)) {
  33.                                 Log.i("yh", "repeat");
  34.                                 Intent serviceIntent = new Intent(context, PushService.class);
  35.                                 context.startService(serviceIntent);
  36.                         }
  37.                         if(("com.alarm.cancel").equals(action)) {
  38.                                 Log.i("yh", "cancel");
  39.                                 Intent serviceIntent = new Intent(context, PushService.class);
  40.                                 context.stopService(serviceIntent);
  41.                         }
  42.                 }
  43. }
复制代码


你看看能不能直接在BroadcastReceiver更新时间
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马