時間が経つにつれて、私のアプリは多くのAsyncTasksを使用しますが、デバッガーでそれらが消えることはなく、実行されてもアクティブなスレッドとして表示されることに気付きました。タスクが完了した後、ガベージコレクターにそれを強制終了するように指示する方法はありますか?
質問する
2595 次
1 に答える
1
編集:レニックは、私の元の答えはAsyncTaskをキャンセルするための適切なAndroidの方法ではなかったことを以下に指摘しました。
AsyncTaskには、キャンセルするための完全で洗練されたシステムがあります。キャンセルする準備ができたら、タスクのメソッドを呼び出しcancel(true)
ます。内部ループを実行している場合は、を使用isCancelled()
してステータスを確認し、ループが返された場合はループを適切に終了しますtrue
。これには、呼び出されて終了onCancelled(Object)
した後にUIスレッドでメソッドを呼び出すという追加の利点があります。次に、タスクへの参照をnullに設定します。cancel(boolean)
doInBackground(Object[])
Lenikに感謝します!回答を投稿すると、クレジットを受け取るためにこれを削除します。
于 2012-05-18T22:44:43.713 に答える