这个activity finish 后 为什么内存没被回收 ?谁阻止了回收?!!!

public class LoginActivity extends FragmentActivity {

    UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.login");
    @InjectView(R.id.photo_welcome)
    RoundedImageView photoWelcome;
    @InjectView(R.id.photo_welcome_con)
    FrameLayout photoWelcomeCon;
    @InjectView(R.id.photo_slogan)
    ImageView photoSlogan;
    @InjectView(R.id.login_type_title)
    TextView loginTypeTitle;
    @InjectView(R.id.login_type_title_con)
    FrameLayout loginTypeTitleCon;
    @InjectView(R.id.btn_mobile)
    FloatingActionButton btnMobile;
    @InjectView(R.id.btn_wechat)
    FloatingActionButton btnWechat;
    @InjectView(R.id.btn_sina)
    FloatingActionButton btnSina;
    @InjectView(R.id.btn_qq)
    FloatingActionButton btnQq;
    @InjectView(R.id.action_con)
    LinearLayout actionCon;
    @InjectView(R.id.real_con)
    LinearLayout realCon;

    private Activity mContext;
    private RoundProgressDialog nProgress;
    private SHARE_MEDIA[] mPlatformsMap;
    public String deviceToken = "";
    private Timer tokenTimer;
    private int waitTime = 120;
    private int tokenCount = 0;
    private View.OnLongClickListener toggleServer = new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {

            if (SystemUtils.debug) {
                ApiUtils.mDomain = ApiUtils.testDomain.equalsIgnoreCase(ApiUtils.mDomain) ? ApiUtils.realDomain : ApiUtils.testDomain;
                BuyueApp.get().setTestMode(ApiUtils.testDomain.equalsIgnoreCase(ApiUtils.mDomain));

                SystemUtils.showMsg("change to: \n " + ApiUtils.mDomain, mContext);
                EventDao evtDao = new EventDao(BuyueApp.get().getApplicationContext());
                BoardDao boardDao = new BoardDao(BuyueApp.get().getApplicationContext());
                CardDao cardDao = new CardDao(BuyueApp.get().getApplicationContext());
                SyncDao syncDao = new SyncDao(BuyueApp.get().getApplicationContext());
                syncDao.markDirty(Sync.EVENT);
                syncDao.markDirty(Sync.BOARD);
                try {
                    evtDao.deleteAll();
                    boardDao.deleteAll();
                    cardDao.deleteAll();
                } catch (SQLException e) {
                    SystemUtils.attemptPrintError(e);
                }
            }
            return false;
        }
    };

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = LoginActivity.this;
        BuyueApp.get().addActivity(LoginActivity.this);

        setContentView(R.layout.activity_login);
        ButterKnife.inject(this);
        //首次执行导入.db文件
        DataManager dbHelper = new DataManager(this);
        dbHelper.openDatabase();
        dbHelper.closeDatabase();

//        umeng message
        PushAgent mPushAgent = PushAgent.getInstance(mContext);
        mPushAgent.enable();
//        umeng analytics
        MobclickAgent.updateOnlineConfig(mContext);
//        umeng upadate
        UmengUpdateAgent.update(this);
        UmengUpdateAgent.setUpdateOnlyWifi(false);
        deviceToken = "";
        tokenTimer = new Timer();

        TimerTask tokenTask = new TimerTask() {
            @Override
            public void run() {

                if (deviceToken != null && !"".equalsIgnoreCase(deviceToken)) {
                    SpUtils.setSpStr(SpUtils.TEP_TOKEN,deviceToken);
                    tokenTimer.cancel();
                } else {
                    deviceToken = UmengRegistrar.getRegistrationId(mContext);
                    tokenCount++;
                }
                if (tokenCount > 300) {
                    tokenTimer.cancel();
                }
            }
        };
        tokenTimer.schedule(tokenTask, 0, 100);

        PushAgent.getInstance(mContext).onAppStart();
        FileUtils.deleteSave();
        FileUtils.clearCache();
        regCasts();
        adjustMyLayout();
        initLogin();
        TextView typeTitle = (TextView) findViewById(R.id.login_type_title);
        typeTitle.setOnLongClickListener(toggleServer);
    }

    private void adjustMyLayout() {

    }

    private void regCasts() {
        SystemUtils.registerReceiver(receiver, NameUitls.ACTION_DO_LOGIN, mContext);
        SystemUtils.registerReceiver(finishReceiver, NameUitls.ACTION_LOGOUT, mContext);
        SystemUtils.registerReceiver(timeOutReceiver, NameUitls.ACTION_TIMEOUT, mContext);
    }

    private void unRegCasts() {
        SystemUtils.unregisterReceiver(receiver, mContext);
        SystemUtils.unregisterReceiver(finishReceiver, mContext);
        SystemUtils.unregisterReceiver(timeOutReceiver, mContext);
    }


    private void initPlatformMap() {
        mPlatformsMap = new SHARE_MEDIA[]{SHARE_MEDIA.GOOGLEPLUS, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.SINA, SHARE_MEDIA.QQ};
    }



没人回答么!!!!!!!

 private void initLogin() {

        initPlatformMap();
        LinearLayout actionCon = (LinearLayout) findViewById(R.id.action_con);
        int len = actionCon.getChildCount();

        String appId = Config.WX_APPID;
        String appSecret = Config.WX_APPSERCRET;
        UMWXHandler wxHandler = new UMWXHandler(LoginActivity.this, appId, appSecret);
        wxHandler.addToSocialSDK();
        mController.getConfig().setSsoHandler(new SinaSsoHandler());
        String qqId = Config.QQ_APPID;
        String qqKey = Config.QQ_APPKEY;
        UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(LoginActivity.this, qqId, qqKey);
        qqSsoHandler.addToSocialSDK();
        mController.getConfig().addFollow(SHARE_MEDIA.SINA, Config.SINA_ID);
        btnMobile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                v.setEnabled(false);
                Intent intent = new Intent();
                intent.putExtra("umtoken",deviceToken);
                intent.setClass(LoginActivity.this, SignMainActivity.class);
                startActivity(intent);
//                NameUitls aboutUs = NameUitls.newInstance();
//                FragmentManager fm = getFragmentManager();
//                FragmentTransaction ft = fm.beginTransaction();
//                aboutUs.show(ft, FRAG_SIGN_MAIN);
                v.setEnabled(true);
            }
        });
        btnMobile.setOnTouchListener(SystemUtils.TouchDark);
        for (int i = 1; i < len; i++) {
            FloatingActionButton btn = (FloatingActionButton) ((FrameLayout) actionCon.getChildAt(i)).getChildAt(0);
            final int finalI = i;
            final SHARE_MEDIA path = mPlatformsMap[finalI];
            btn.setOnTouchListener(SystemUtils.TouchDark);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    disableBtns();
                    if (SystemUtils.isUnConnected(mContext)) {
                        SystemUtils.showMsg(mContext.getString(R.string.msg_net_timeout), mContext);
                        enableBtns();
                        return;
                    }
                    attemptShowProgress("登录中", waitTime);
                    mController.doOauthVerify(LoginActivity.this, path, new SocializeListeners.UMAuthListener() {

                        @Override
                        public void onComplete(final Bundle value, SHARE_MEDIA share_media) {
//                            progressDialog = ToolUtils.showRoundProgress("登录中", mContext);
                            if (value != null && !TextUtils.isEmpty(value.getString("uid"))) {
                                mController.getPlatformInfo(LoginActivity.this, path, new SocializeListeners.UMDataListener() {
                                    @Override
                                    public void onComplete(int status, Map<String, Object> info) {
                                        if (status == 200 && info != null) {
                                            User user = null;
                                            try {
                                                switch (finalI - 1) {
                                                    case 0:
                                                        user = SdkUtils.getUserFromWechat(info, deviceToken);
                                                        break;
                                                    case 1:
                                                        user = SdkUtils.getUserFromWeibo(info, deviceToken);
                                                        break;
                                                    case 2:
                                                        String puid = value.getString("uid");
                                                        user = SdkUtils.getUserFromQq(info, puid, deviceToken);
                                                        break;
                                                }
                                                Boolean result = DataCenter.login(user, mContext);
                                                dealLogin(result);
                                            } catch (NullPointerException e) {
                                                dealLogin(false);
                                            }
                                        } else {
                                            prepareLogin();
                                        }
                                    }

                                    @Override
                                    public void onStart() {

                                    }
                                });
                            } else {
                                prepareLogin();
                                SystemUtils.showMsg("授权失败,请稍后重试", mContext);
                            }
                        }

                        @Override
                        public void onStart(SHARE_MEDIA share_media) {
                        }

                        @Override
                        public void onError(SocializeException e, SHARE_MEDIA share_media) {
                            prepareLogin();
                        }

                        @Override
                        public void onCancel(SHARE_MEDIA share_media) {
                            prepareLogin();
                        }
                    });
                }
            });
        }
        if (BuyueApp.get().authed()) {
            DataCenter.login(BuyueApp.get().getUser(), mContext, true);
            Intent toMain = new Intent();
            toMain.setClass(mContext, MainActivity.class);
            toMain.putExtra(NameUitls.NEED_LOGIN_XMPP, true);
            LoginActivity.this.startActivity(toMain);
            LoginActivity.this.finish();
        } else {
            if (BuyueApp.get().getUser() != null && DataUtils.notZero(String.valueOf(BuyueApp.get().getUser().getId()))) {
                attemptShowProgress("登录中", 30);
                boolean result = DataCenter.login(BuyueApp.get().getUser(), mContext);
                dealLogin(result);
            }
        }
    }

    public void dealLogin(boolean result) {
        if (result == Boolean.TRUE) {
            attemptShowProgress("登录中", waitTime);
        } else {
            SystemUtils.dismissDialog(nProgress);
            SystemUtils.showMsg(R.string.msg_net_timeout, mContext);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode);
        if (ssoHandler != null) {
            ssoHandler.authorizeCallBack(requestCode, resultCode, data);
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            BuyueApp.get().onTerminate();
        }
        return super.onKeyDown(keyCode, event);
    }

    private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            SystemUtils.dismissDialog(nProgress);
            String ret = intent.getStringExtra("ret");
            String data = intent.getStringExtra("data");
            if (ApiUtils.RET_S.equalsIgnoreCase(ret)) {
                Intent toMain = new Intent();
                toMain.setClass(mContext, MainActivity.class);
                toMain.putExtra(NameUitls.NEED_LOGIN_XMPP, true);
                LoginActivity.this.startActivity(toMain);
                LoginActivity.this.finish();
            } else {
                SystemUtils.showMsg(data, mContext);
                enableBtns();
            }
        }
    };

    private BroadcastReceiver finishReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            SystemUtils.dismissDialog(nProgress);
        }
    };

    private BroadcastReceiver timeOutReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            SystemUtils.dismissDialog(nProgress);
            SystemUtils.showMsg(R.string.msg_net_timeout, mContext);
            enableBtns();
        }
    };

    @Override
    protected void onResume() {
        enableBtns();
        tokenCount = 0;
        super.onResume();
//        SystemUtils.bindLocation(mContext);
        MobclickAgent.onResume(this);
    }

    @Override
    public void onPause() {
        super.onPause();
//        SystemUtils.unbindLocation(mContext);
        MobclickAgent.onPause(this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        enableBtns();
    }

    @Override
    protected void onDestroy() {
        SystemUtils.dismissDialog(nProgress);
        unRegCasts();

        BuyueApp.get().removeActivity(LoginActivity.this);
        super.onDestroy();
        SystemUtils.debugLog("test-cache","login destroy",BuyueApp.get().getActivitys()+"");
    }

    private void disableBtns() {
        btnQq.setEnabled(false);
        btnWechat.setEnabled(false);
        btnSina.setEnabled(false);
    }

    private void enableBtns() {
        btnQq.setEnabled(true);
        btnWechat.setEnabled(true);
        btnSina.setEnabled(true);
    }

    private void prepareLogin() {
        enableBtns();
        SystemUtils.dismissDialog(nProgress);
    }

    private void attemptShowProgress(String msg, int waitTime) {
        SystemUtils.dismissDialog(nProgress);
        nProgress = ToolUtils.showRoundProgress(msg, mContext, waitTime);
    }

夜深了 代码没看
看了题目
activity在创建界面的时候,由setContentView创建一个主view(即绘制整个界面的父view),由于在finish的时候,这个view还持有activity的引用,因此activity无法被回收,造成内存泄漏
如果是这种情况,可以找我探讨一下~

大神,我也遇到同样的问题,求帮助qq 654897348