0

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

到目前为止,我已经提出了 AlarmManager 和 Service,但我不确定这是一个好习惯。还有其他建议吗?我在 Handler 中看到了一些相关的方法,但我不知道如何使用它们来处理 uptime 参数。

警报

    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);

Receiver(检查正在运行的活动是否是需要更新的活动之一)

@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 更新。再次不确定这是否是最佳解决方案。

感谢您的建议。

4

1 回答 1

0

好吧,您知道您的应用程序何时可见“onStart() / onStop()”,此时您可以启动一个TimerTask.

我想如果你只是更新 UI,当用户没有打开你的应用程序时,它就不必发生。

于 2012-10-01T07:47:48.650 回答