0

while(true)ループを使用して着信パケットを継続的にフィルタリングするチャット クライアント アクティビティがあります。パケットに含まれるメッセージに基づいて、サービスを開始および停止する必要があります。サービスは集中的な長時間実行タスクを実行します。サービスは呼び出し元アクティビティの同じスレッドで開始されるため、サービスを開始できず、パケットのフィルタリングも続行できません。そうしないと、ANR ダイアログが表示されます。アクティビティとサービスの両方がタスクを実行し続け、アクティビティが後でサービスに通知/停止できるようにするにはどうすればよいですか?

新しいスレッドでサービスを開始しましたが、それでも ANR が発生しました。

編集: AsyncTaskBroadcastReceiverの使用は、サービスの呼び出し時にパケット フィルタリングが停止されている場合にのみ機能します。両方を同時に行うと、ANR が得られます。

4

1 に答える 1

0

ブロードキャスト レシーバーを使用して、特定のインテント フィルターに登録します。チャット メッセージの内容に基づいて処理を行う必要があるときはいつでもインテントをブロードキャストします。レシーバー内では、必要なアクションを実行できます。

于 2013-06-11T11:54:14.807 に答える