XML で許可されている 30 分よりも頻繁に更新したい TextView を使用してデジタル時計を表示するウィジェットがあります。私は例を見てきましたが、誰かが私の特定の問題を手伝ってくれるのが好きです。ウィジェットは正しく構成され、正常に動作しますが、デジタル時計であるため、正常に更新されません。
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
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);
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.digitalclock);
views.setOnClickPendingIntent(R.id.gl, pendingIntent);
java.util.Date noteTS = Calendar.getInstance().getTime();
String time = "kk:mm";
views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS));
String date = "dd MMMMM yyyy";
views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS));
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
xml android:updateperiodmills は 30 分ごとにのみ更新されますが、メイン アプリで run メソッドを使用して行ったように、少なくとも 1 秒ごとに TextView を更新または設定する必要があります。どんな助けでも大歓迎です。ありがとう
編集
public class DigitalClock extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
final int N = appWidgetIds.length;
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);
final RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.digitalclock);
views.setOnClickPendingIntent(R.id.gl, pendingIntent);
final java.util.Date noteTS = Calendar.getInstance().getTime();
final String time = "kk:mm";
final String date = "dd MMMMM yyyy";
BroadcastReceiver mBroadcastTime = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
views.setTextViewText(R.id.tvTime,
DateFormat.format(time, noteTS));
views.setTextViewText(R.id.tvDate,
DateFormat.format(date, noteTS));
}
};
IntentFilter mTime = new IntentFilter(Intent.ACTION_TIME_TICK);
registerReceiver(mBroadcastTime, mTime);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
private void registerReceiver(BroadcastReceiver mBroadcastTime,
IntentFilter mTime) {
}
}
これが私のクラスになりましたが、このメソッドを追加する必要がありました:
private void registerReceiver(BroadcastReceiver mBroadcastTime,
IntentFilter mTime) {
}
どうすればいいですか?