0

免責事項:Handler.obtainMessage();自分でインスタンス化するのではなく、実行する必要があることは理解していますが、このコードは、Java で発生している問題を示しています。

Androidのハンドラーに文字列を含むメッセージを送信しようとしているコードがいくつかあります。

私は最初に次のようなことを試しました: mHandler.sendMessage(new Message().setData(new Bundle().putString("key","value)));

これは明らかに機能しませんでした。setData args (Bundle) が指定したものと一致しません (void);

そう、putString は void を返さなければならず、setData も同様に void を返すと思うので、これは悪いアプローチでした。私はそれを次のように分割しようとしました:

Bundle b = new Bundle();
b.putString("key","value");
Message m = new Message();
m.setData(b);
listener.sendMessage(m);

これは面倒な方法のようです。代表的な方法は?これを行うと、これらのオブジェクトは参照を失い、メソッドの完了時にガベージ コレクションされるか、または m=null; を追加する必要があります。b=ヌル; このメソッドに; または、handleMessage メソッドで null を割り当てる必要がありますか? (これがマルチスレッドの状況でどのように機能するかはわかりません。)

4

2 に答える 2