いくつかのアクティビティでインターフェイス (NetworkListener と呼ばれる) を実装しています。リモート サーバーから情報を要求すると、クラスのインスタンス (NetworkRequest と呼ばれます) が生成されます。NetworkRequest は、要求をサーバーに送信し、応答を待って、要求元の NetworkListener オブジェクトに送り返すスレッド化されたクラスです。データが NetworkListener インスタンスに返されるまでに最大 10 秒かかる場合があります。その間、そのアクティビティまたはフラグメントが存在しなくなり、サーバー呼び出しに基づく多くのアクションが無効になり、次のような NPE がスローされる可能性が十分にあります。
((TextView) findViewById(R.id.server_status)).setText("Server response: " + response.getMsg());
要求しているクラスがまだ生きていて、UI を更新できるようにする最善の方法は何ですか?
現在、私が持っているサーバーからコールバックを受け取るすべてのメソッドの上部にあります:
if (getWindow() == null) { // or getView()/getActivity() if Fragment
finish();
return;
}
これは非効率的で冗長なようです。私が達成しようとしていることに対するより良い方法はありますか?
ありがとう!