ImageView
そのため、新しいビットマップを時計仕掛けのように定期的にロードして、うまくリフレッシュするアプリウィジェットがあります。その後、ある時点で静かに更新を停止します。ログから、および私のコードが照会しているサーバーでのアクティビティから、ウィジェットが実際にはまだ定期的に起動し続けていることがわかります (によってキャッチされたブロードキャストを介してonReceive()
、期待どおりに動作しています。唯一起こっていないことは、ウィジェットのコンテンツが更新されていないということです。
そのため、ウィジェットが起動したときに実行されるコードでは、新しい RemoteViews を作成し、新しいビットマップを を介してロードするなどの要素を追加しremoteViews.setImageViewBitmap(imageViewID, bmp)
、最後に呼び出しappWidgetManager.updateAppWidget(appWidgetId, remoteViews)
てウィジェットのコンテンツを更新しています。うまく機能します...機能しなくなるまで。
99% の確率で問題なく動作するため、どのコードを投稿すればよいかわかりませんが、updateAppWidget()
明らかな理由もなく動作を停止することがあります。私のコードのバグではなく、システムの問題のようですが、間違っている可能性があります。
おそらくこれを促しているように見える唯一のことは、接続に変更がある場合です。たとえば、信号がない状態から WiFi に移行する場合などです。そのような状況でより多く発生するようです。
ウィジェットがフリーズすると、フリーズを解除する唯一の方法は、デバイスを再起動することです。再起動しないと、ウィジェットを削除して新しいウィジェットを追加しても機能しません。実際、新しいウィジェットを追加すると、クリックして Config アクティビティを開くことさえできないデッド ウィジェットになりremoteViews.setOnClickPendingIntent(R.id.widget, configPendingIntent)
ます。RemoteViews
appWidgetManager.updateAppWidget()
ここで他の多くの人が説明したのとほとんど同じようです:
https://code.google.com/p/android/issues/detail?id=28216
そして、まだ治療法は知られていないようです。https://code.google.com/p/android/issues/detail?id=28216#c56の投稿はいくつかの約束を提供しているように見えましたがAppWidgetHost.startListening()
、繰り返しアラームを介して定期的に行うなど、さまざまな場所で電話をかけてみましたウィジェットをキックスタートできるかどうかを確認しましたが、何も機能していないようです。
また、他のユーザー (開発者ではなく) もこの問題を見ているようです: http://androidforums.com/threads/clock-widget-keeps-freezing-please-help.530333/
何か案は?それはゆっくりと私を怒らせています!