私は、そのウィジェットのレイアウトにボタン付きのアプリウィジェットを持っています。 ボタンをクリックすると、放送受信機を呼び出すインテントが発生します。Android - AppWidgetの保留中のインテントが起動しない
これはうまくいきますが、タスクマネージャーの「メモリを消去」ボタンを使用した後にウィジェットが停止しても何も起こりません。しかし、それが実行されている場合でも、私のアプリから更新を受け取ることができます。
保留中のインテントが実行されないという事実が、メモリクリアフォールトまたは私のフォールトであるかどうかはわかりません。 とにかく、ここでのコードは次のとおりです。
が保留意図(アプリ・ウィジェットのにonUpdate方法)
Intent intent = new Intent(context, ServiceControl.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget);
views.setOnClickPendingIntent(R.id.appwidgetbutton, pendingIntent);
を登録して、ビューでウィジェットを更新します。ここで
アプリウィジェットプロバイダのdeclerationです:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="72dp"
android:minHeight="72dp"
android:initialLayout="@layout/appwidget"
android:updatePeriodMillis="0">
</appwidget-provider>
私は私は私のアプリ自体からそれを更新し、システムはウィジェットの更新プログラムをコールする必要はありません。
なぜ、保留中の意図は放火を停止するのですか?
ありがとうございます。
Androidに「タスクマネージャー」が組み込まれていないため、「メモリを消去してください」ということはわかりません。これをテストしているAndroidのバージョンは? – CommonsWare
2.3.3ですが、この「タスクマネージャー」はサムスンの携帯電話にとって特別なものだと私は確信しています。私はテストして、私のサムスンギャラクシーS2と私のお父さんのS1でこの問題を持っていたので、おそらくそれはこの "クリアメモリ"の欠陥です。私が与えたコードでは、私がやったことが間違っているからではありません。 – Jong
コードは正常です。あなたの行動が発生するのを見ることができる1つのシナリオは、ユーザーがタスクキラーまたは設定の何かのサービスの管理画面を介してあなたのアプリを抹殺した場合、Android 3.1以降にあります。あなたのアプリは「停止」状態に移行し、ユーザーがあなたの活動の1つを手動で起動するまで、ブロードキャストを受信することはできません。 "クリアメモリ"はタスクキラーのいくつかのバリエーションかもしれないが、私はAndroid-3.1まではno-more-broadcastsルールが有効にならないと確信している。 – CommonsWare