2012-10-01 33 views
0

我的应用程序包含一个活动,由于服务器显示计划,UI必须更新。在这种情况下更新UI的最佳方法是什么?Shedule UI更新

到目前为止,我已经提出了AlarmManager和Service,但我不确定这是一个好的做法。还有其他建议吗?我在Handler中看到了一些相关的方法,但我没有关于正常运行时间参数的使用方法。

报警

Intent intent = new Intent(getActivity(), OnAirUpdateAlarmReceiver.class); 
    PendingIntent sender = PendingIntent.getBroadcast(getActivity(), 
      0, intent, 0); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.add(Calendar.SECOND, 10); 

    AlarmManager am = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); 
    am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender); 

接收器(运行活动检查是否是一个需要更新)

@Override 
public void onReceive(Context context, Intent intent) { 
    ActivityManager am = (ActivityManager) context 
      .getSystemService(Activity.ACTIVITY_SERVICE); 
    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
    String name = taskInfo.get(0).topActivity.getShortClassName(); 
    if (name.equals(".activity.handset.HandsetMainActivity")) { 
     Intent notificationIntent = new Intent(context, 
       HandsetMainActivity.class); 
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_ACTIVITY_NEW_TASK); 
     notificationIntent.putExtra(
       context.getResources().getString(
         R.string.extras_main_activity_on_new_intent), 
       HandsetMainActivity.UPDATE_PLAYER_FRAGMENT_UI); 
     context.startActivity(notificationIntent); 
    } 
} 

而如果是 - 请求片段UI更新。再次不确定这是否是最佳解决方案。

感谢您的建议。

回答

0

那么,你知道什么时候你的应用程序可见'onStart()/ onStop()'在这一点上,你可以开始TimerTask

我想如果你只更新用户界面,当用户没有打开你的应用程序时,它不会发生。

+0

好的,谢谢 - 会去看看它。我会保持打开一段时间的问题。 – midnight