0

クリックすると自動的に更新されるウィジェットを実行しようとしています。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 ...

    }
    }
4

1 に答える 1

0

私はそれを解決したと思います、問題はにありましたIntentService、サービスはリモートビューを介してウィジェットを更新しましたが、登録されていませんsetOnClickPendingIntent

于 2012-11-06T15:35:13.177 に答える