23

現時点では、フラグメントの停止メソッドで mRequestQueue.cancelAll(getActivity()) を使用していますが、電話を横向きから縦向きに移動すると、リクエストで作成されたデータはまだ返されますが、ホルダーが原因でクラッシュが発生するようですデータはもう存在しません。それを正しく行う方法のサンプルコードはありますか?

4

9 に答える 9

4

この回答が遅れていることは知っていますが、他の誰かがこの問題を抱えている場合:

私の実装では、リクエストがキューに追加された時点でタグが設定 (および上書き) されていました。

そのため、タグでリクエストをキャンセルしていたにもかかわらず、リクエスト キューのタグは (以前に上書きされたため) 同じではなく、キャンセルされませんでした。

実行中のリクエストをログに記録し、タグを出力すると、解決策にたどり着きました。

mRequestQueue.cancelAll(new RequestQueue.RequestFilter() {
    @Override
        public boolean apply(Request<?> request) {
        Log.d("DEBUG","request running: "+request.getTag().toString());
            return true;
        }
});
于 2013-11-22T12:58:25.593 に答える
1

フラグメントからキューにリクエストを追加する場合は、次のようにキャンセルする必要がありますmRequestQueue.cancelAll(this)。うまくいかなかった場合は申し訳ありません-私はこのソリューションをテストしていません。しかし、これがあなたの助けになることを願っています。

于 2013-06-06T06:38:31.643 に答える
0

リクエストのタグをアクティビティに設定していますか? これが、提供しているコードが機能する唯一の方法です。cancelAll メソッドは、指定したタグのタグを持つすべてのリクエストを検索し、それらをキャンセルします。

于 2013-10-03T18:45:23.590 に答える