據我所知,處理程序可以在Android的內存泄漏,但我不是很確定我所做的是正確的:Android處理程序,內存泄漏?
public class MyActivity extends Activity
{
Handler handler;
HashMap<String, String> bigData = new HashMap<String, String>();
protected void onCreate(undle savedInstanceState) {
super.onCreate(savedInstanceState);
handler = new WeakHandler(){
public void handlerMessage(Message msg, Context conetxt)
{
// i think this usage is wrong, still leak, am I right?
Log.v("MyActivity", bigData.get("abc"))
}
}
};
static class WeakHandler extends Handler {
private final WeakReference<Context> ref;
public WeakHandler(Context t) {
super();
ref = new WeakReference<Context>(t);
}
@Override
public final void handleMessage(Message msg) {
final Context context = ref.get();
if (context != null) {
handleMessage(msg, context);
}
}
public void handlerMessage(Message msg, Context conetxt)
{
}
}
而且,如果我只想用一個處理程序「後」,「postDelayed」 「removeCallbacks」,我不關心的handleMessage,是安全的,只需要創建一個新的處理程序實例要做到這一點,就像這樣:
new Handler().postDelayed(some Runnable);
參考[這裏](http://v4all123.blogspot.com/2012/12/handler.html)處理器幫助在android – Gunaseelan 2013-03-26 06:01:12