Web Api RequestsにはAsynctask
のアプリケーションがあり、たくさんのタブがたくさんリクエストされています。アクティビティが閉じられてクラッシュするようになると、Asynctaskの結果が来る
ユーザーがタブ間で非常に高速にスクロールすると、多くのリクエストランチが発生します。ユーザーがアクティビティを閉じると、バックグラウンドでいくつかの進行中のdoがアプリクラッシュを引き起こします。
私はこの試みた:活動の onStopを、私はそれのonPostExecute
を走っAsyctaskをキャンセル:私もAsynctaskがActivityから実行したときにこれを行う)フラグメントはisAdded場合、私はいつも(チェック私のdoinBackgroundに
@Override
protected Void doInBackground(Void... Params) {
Bundle bundle = getArguments();
String url = ServiceHandler.serverEnum.serverRootPath + ServiceHandler.serverEnum.Me.toString();
if(isAdded()){
response = StaticUtils.generateReguest(mContext, url, headerParams, bodyParams, URLParams, null, ServiceHandler.serviceMethod.get.toString());
}
return null;
}
を をキャンセルされていないかどうか確認してください。しかし問題は私がdoInBackground
にクラッシュすることです。
この
はクラッシュがStaticUtils.generateReguest
に応じる作成に起こるラインである:
if (status != 200 && status != 401 && status != 404 && status != 0) {
Intent intent = new Intent(context, ErrorActivity.class); //error point to this line
intent.putExtra(ErrorActivity.REASON, "SERVER");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
(context).startActivity(intent);
}
、これは上の行につながるログ猫です:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
私はそれが理由文脈のかもしれないと思います。私が要求を生成するとき、私はアクティビティコンテキストをRequestgeneratorに渡し、コードではエラーアクティビティを表示するようにします。ユーザがアクティビティコンテキストを変更したときに、RequestジェネレータがErrorActivityを開けないように変更したとき。これを処理するベストプラクティスは何ですか?私はグーグルで、良い解決策を見つけることができませんでしたか?
あなたはアクティビティのonPauseでも同じことをする必要があります。 – Shuddh
OnBackgroundを実行するとクラッシュが発生します。 – Kenji
あなたは私にログを与えることができます – Shuddh