1

Android を使用して時計ウィジェットを作成しています。時計をテストしましたが、ロジックは問題ないようですが、毎分更新する必要があります。

XML で updatePeriodMillis を 60000 に設定しましたが、Android ではこれが 30 分に制限されているため、30 分ごとにしか更新されません。

私はいくつかの調査を行い、呼び出しているメソッドが onUpdate() メソッドを介して渡される AppWidgetManager と AppWidgetId を必要とすることを除いて、Service または AlarmManager が機能した可能性があります。

分単位の更新を機能させるために、2つの(同様の)方法を試しました。

static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager,
                            final int appWidgetId) {

    final Handler mHandler = new Handler();
    TimerTask minuteTask = new TimerTask() {

        @Override
        public void run() {
            mHandler.post(new Runnable() {
                @Override
                public void run() {

                    //Do Stuff
            });
        }
    };

    timer = new Timer();

    // schedule the task to run starting now and then every minute
    timer.scheduleAtFixedRate(minuteTask, 0l, 1000 * 60);

}

と:

static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager,
                            final int appWidgetId) {

    TimerTask minuteTask = new TimerTask() {

        @Override
        public void run() {

            //Do stuff
        }
    };

    timer = new Timer();

    // schedule the task to run starting now and then every minute
    timer.scheduleAtFixedRate(minuteTask, 0l, 1000 * 60);

}

どんな助けでも大歓迎です。

ありがとう。

編集:デバッグしてこの投稿を作成するのにかかった時間で、アプリをインストールしたまま30分放置しました。onUpdate() が最初に呼び出された 30 分後にタイマーが開始されたように見えますが、最初の 30 分間はまだ機能しません。

4

2 に答える 2

1

私はいくつかの調査を行い、呼び出しているメソッドが onUpdate() メソッドを介して渡される AppWidgetManager と AppWidgetId を必要とすることを除いて、Service または AlarmManager が機能した可能性があります。

アプリ ウィジェット ID をファイルに保存します。または、アプリ ウィジェット ID ではなく を最初のパラメーターとして受け取るのフレーバーを使用してupdateAppWidget()、アプリ ウィジェットのすべてのインスタンスを同じ に更新します。ComponentNameRemoteViews

を使用して取得できAppWidgetManagerます。IntentService getInstance()

分単位の更新を機能させるために、2つの(同様の)方法を試しました

プロセスの実行中にのみ機能するため、これは無意味です。

于 2015-05-17T15:57:25.887 に答える