I saw many place using WeakReference like below, what's the reason to use like this? Is it must to be use like that in this senario?
public class MyActivity extends Actiivity {
 private class InitServiceRunnable implements Runnable
    {
        WeakReference<MyActivity> mActivityRef;
        public InitServiceRunnable(MyActivity activity)
        {
            mActivityRef = new WeakReference<MyActivity>(activity);
        }
        @Override
        public void run() { /* using mActivityRef here */}
    }
}
