0

私のアプリには、サーバーの表示スケジュールのためにUIを更新する必要があるアクティビティが含まれています。この状況で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の更新をリクエストします。これが最善の解決策であるかどうかもわかりません。

あなたの提案をありがとう。

4

1 に答える 1

0

さて、この時点で、アプリケーションが「onStart() / onStop()」で表示されるタイミングがわかりますTimerTask。.

UI のみを更新している場合は、ユーザーがアプリを開いていないときに発生する必要はないと思います。

于 2012-10-01T07:47:48.650 に答える