クリックすると自動的に更新されるウィジェットを実行しようとしています。Co、私は魅力のように機能する次のコードを作成しました-しかし、約20分間だけ機能しなくなりました(クリックしても更新されなくなりますが、XMLで指定された期間後にクラシックウィジェットの自己更新が機能します)ウィジェットの別のインスタンスを追加すると、すべてのインテントが再度登録されます。
他の誰かが問題に直面しましたか? 私のコードに何か問題がありますか?
私のウィジェットプロバイダーで:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
final int N = appWidgetIds.length;
Log.d(tag, "onUpdate");
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_exchange_rate_small);
Intent intent = new Intent(context, ExchangeRateWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getService(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Register onClick action for pendingIntent
views.setOnClickPendingIntent(R.id.wdExchangeRate, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
try {
// Perform first update
pendingIntent.send();
} catch (CanceledException e) {
Log.e(tag, "First update has been canceled, this should not normally happend!");
e.printStackTrace();
}
}
サービスの宣言方法:
public class ExchangeRateWidgetService extends IntentService {
protected void onHandleIntent(Intent intent) {
// Doing something ...
}
}