2

私は現在、2つを使用するウィジェットを持っていますsetTextViewText:

public class DigitalClock extends AppWidgetProvider {

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    int N = appWidgetIds.length;

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.digitalclock);

    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];

        Intent clockIntent = new Intent(context, DeskClock.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clockIntent, 0);

        views.setOnClickPendingIntent(R.id.rl, pendingIntent);
        java.util.Date noteTS = Calendar.getInstance().getTime();
        String time = "kk:mm";
        String date = "dd MMMMM yyyy";

        views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS));
        views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS));

        appWidgetManager.updateAppWidget(appWidgetId, views);


    }

}
}

私の質問は、これを使用してTextView毎秒 2つを設定し、appwidgetprovider許可される 30 分ではなく時間を更新する方法です。AlarmManagerservice、 ...の使用について聞いたことがあります。handler問題は、誰もそれを明確にしたり、私がこれを行う方法の例を示したりしていないようです。

誰かがこれを達成するための明確な方法を持っているなら、私はそれを感謝します

4

1 に答える 1

3

バックグラウンドでいくつかのサービスが実行されている場合があります。そのサービスまたはアクティビティから AppWidgetProvider (この場合は DigitalClock) を拡張するクラスにブロードキャスト メッセージを送信し、同じクラスの onReceive() 関数をオーバーライドします。

ステップ 1: サービスまたはどこかからブロードキャストを送信します。

ステップ 2: ur DigitalClock クラスに onReceive() 関数を追加します。

    public class DigitalClock extends AppWidgetProvider {


        public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        int N = appWidgetIds.length;

        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.digitalclock);

        for (int i = 0; i < N; i++) {
            int appWidgetId = appWidgetIds[i];

            Intent clockIntent = new Intent(context, DeskClock.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clockIntent, 0);

            views.setOnClickPendingIntent(R.id.rl, pendingIntent);
            java.util.Date noteTS = Calendar.getInstance().getTime();
            String time = "kk:mm";
            String date = "dd MMMMM yyyy";

            views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS));
            views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS));

            appWidgetManager.updateAppWidget(appWidgetId, views);


        }

    }
  @Override
        public void onReceive(Context context, Intent intent) {


                super.onReceive(context, intent);
//Do your task here like updating the textviews
}

    }
于 2013-03-10T15:31:04.793 に答える