android内存泄露

##一.(非静态)内部类引发内存泄漏的缘由(Handler) #####Activity内handler自己支持activity对象,因此在 public void handleMessage(Message msg) {}能进行view的操做,因此当发生GC时候,activity因为handler的引用没法释放,进而形成内存泄露。 #####解决方案:静态内部类+弱引用,以下: public class MainActivity extends Activity { private Handler mHandler = new MyHandler(this); public TextView textView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); textView = new TextView(this); textView.setText("hellow"); setContentView(textView); mHandler.sendMessageDelayed(Message.obtain(), 2000); } private static class MyHandler extends Handler { private WeakReference<MainActivity> mWeakReference; public MyHandler(MainActivity activity) { mWeakReference = new WeakReference<MainActivity>(activity); } "@Override" public void handleMessage(Message msg) { MainActivity activity = mWeakReference.get(); if (activity != null) activity.textView.setText("静态内部类的Handler"); } } "@Override" protected void onDestroy() { super.onDestroy(); if (mHandler != null) mHandler.removeCallbacksAndMessages(null); } }ide