3

Stack Overflowのどこかで、いつか次のコードを見つけました。これをアプリケーションに少し調整しました。

private void updateWidget() {
    AppWidgetManager widgetManager = AppWidgetManager.getInstance(ctx);
    ComponentName widgetComponent = new ComponentName(ctx, MyAppWidgetProvider.class);
    int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent);
    Intent update = new Intent();
    update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds);
    update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
    ctx.sendBroadcast(update);
}

これにより、アプリケーションのウィジェットのすべてのインスタンスがプログラムで更新されます。で一度設定しctxActivity'sコンテキスト( )です。上記のメソッドは、のメソッドで呼び出されます。thisonCreate()ActivityonStop()

残念ながら、呼び出されると、アプリのウィジェットが他のアプリのウィジェット(APニュースなど)に置き換えられます(少なくともしばらくの間)。

これはどのように起こりますか?コードに何か問題がありますか?

ありがとうございました!

編集#1:これをより明確に指摘するには:自動更新の間隔をすでに定義しました。Activityしかし、それに加えて、時々ウィジェットを更新したいと思います。この質問は、それも可能であることを示唆しています。

編集#2:間違ったウィジェットが数秒間しか表示されないのを見たところです。その後、自分のアプリのウィジェットが再び表示されます。

4

3 に答える 3

4

過去にウィジェットに問題があり、解決しました。私のソリューションがうまくいった理由は本当にわかりません。そして、Marco W.で機能したので、ここに配置します。更新コードをサービスに移動するだけでした。更新が必要な場合は、そのサービスを開始してください。繰り返しになりますが、それについてはよくわかりませんが、問題は解決しました。

マルコに感謝します。Androidでさらに経験を積むことができました。それはおかしいです :-)

于 2012-07-02T12:51:21.173 に答える
0

すべてのウィジェットを更新できるメソッドを使用してこの問題を解決しました。このメソッドは、含まれているデータを変更した後notifyAppWidgetViewDataChanged、コレクションビュー(StackView私の場合)を更新するように機能するという説明があります。

于 2014-08-19T14:20:18.097 に答える
-1

ウィジェットの外で更新機能を実行している理由はありますか?updatePeriodMillisプロパティを使用する方が理にかなっているように思われますか?そのプロパティを、ウィジェットがonUpdate()を呼び出す頻度に設定できます。これにより、更新された情報を提供できます。

http://developer.android.com/guide/topics/appwidgets/index.html#MetaData

于 2012-06-24T18:15:58.657 に答える