1

私はアプリケーション(インスタントボタンと呼ばれる)を開発しましたが、そのアプリにはウィジェット機能があります。このウィジェットは、ウィジェットのonClickにPendingIntentを使用します。

私のPendingIntentコードは次のようなものです:

    Intent active = new Intent(context, InstantWidget.class);
    active.setAction(String.valueOf(appWidgetId));
    active.putExtra("blabla", blabla); //Some data

    PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);

    actionPendingIntent.cancel();
    actionPendingIntent = PendingIntent.getBroadcast(context, 0, active, 0);

    remoteViews.setOnClickPendingIntent(R.id.button, actionPendingIntent);

onReceiveはインテントを取得し、MediaPlayerクラスを使用してサウンドを再生します。

一部のユーザーから、ウィジェットがしばらくすると機能しなくなるという報告があります。調査の結果、タスクキラーが原因であることがわかりました。TaskKillerでアプリを強制終了すると、PendingIntentがメモリから消去されるようです。そのため、ウィジェットをクリックしても、何をすべきかわかりません。

これに対する解決策はありますか?私のコードは間違っているか何かですか、それともPendingIntentのデフォルトの動作ですか?TaskKillerを回避してウィジェットの動作を停止するために使用できるものはありますか?

ご挨拶。

4

2 に答える 2

7

これに対する解決策はありますか?

タスクキラーを使用しないようにユーザーに依頼します。または、将来のAndroidリリースがタスクキラーの抜け穴を閉じるのを待ちます。

私のコードは間違っているか何かですか、それともPendingIntentのデフォルトの動作ですか?

あなたのコードはおそらく問題ありません。タスクキラーが使用するハックはほとんどすべてを一掃するので、私はこの振る舞いに少なからず驚いていません。

TaskKillerを回避してウィジェットの動作を停止するために使用できるものはありますか?

あまり。あなたのユーザー(少なくとも完全なモロンではないユーザー)は、タスクキラーの使用の影響をもっと意識することを学ぶことを願っています。現在、タスクキラーアプリに対する賢明な防御策はありません。

于 2010-04-24T21:57:14.720 に答える
0

アプリが閉じられたときにウィジェットの保留中のインテントがアクティビティに接続しなくなるという同じ問題がありました。作成、キャンセル、および再作成は機能しましたが、現在のキャンセルフラグを指定して、システムが自動的にキャンセルを呼び出す必要がないようにすることもできます。を使用する代わりに保留中のインテントを作成する場合

PendingIntent.getBroadcast(context, 0, active, 0);

使用する

PendingIntent.getBroadcast(context, 0, active, PendingIntent.FLAG_CANCEL_CURRENT);
于 2014-10-17T21:27:49.947 に答える