3

コードを考えると

 private static class MyHandler extends Handler 
 {
       private final WeakReference<MainActivity> mTarget;
       MyHandler(MainActivity intarget) {
       mTarget = new WeakReference<MainActivity>(intarget);
 }

 @Override
 public void handleMessage(Message msg) 
 {
       MainActivity target = mTarget.get();  // target becomes null will causes null      pointer exception
       switch (msg.what) {
        ..
        }
 }
}

NullPoinetrException を回避するには、次を使用できます。

if(target != null {
     // do something
}

しかし、ターゲットがnullになると、アプリでそれ以上進むことができません。

質問:

null になったときにターゲットを取得してさらに続行する方法はありますか、それともアクティビティまたはアプリを終了する必要がありますか?

ありがとう。

4

2 に答える 2

0

の概要をお読みくださいWeakReference。週参照のオブジェクトができるだけ早く収集されることが直接指摘されています。

したがって、通常の参照または を使用する必要がありますSoftReference

于 2012-10-10T07:09:19.397 に答える