求大神解答,解决handler内存溢出用了弱引用,我这种写法为什么还会警告,

public class MainActivity extends AppCompatActivity {

private static class MyHandler extends Handler{
    WeakReference<AppCompatActivity> mactivity;
    public MyHandler(AppCompatActivity activity)
    {
        mactivity=new WeakReference<AppCompatActivity>(activity);
    }
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    final MyHandler handler=new MyHandler(this){
        @Override
    public void handleMessage(Message msg)
        {

        }
    };
}

}

因为你的引用不对

你应该把重写handleMessage()方法放在自定义的MyHandler类里面,不应该放在new 出来的对象里面。
这样:

 private static class MyHandler extends Handler {
        WeakReference<AppCompatActivity> mActivity;
        public MyHandler(Activity activity)
        {
            mActivity=new WeakReference<AppCompatActivity>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 1:

                    break;
                default:
                    break;
            }
        }
    }

在创建对象时,直接这样就行了:MyHandler handler=new MyHandler(this);
另外建议你:mactivity改为mActivity,因为前者命名不够规范,不知道你有没注意到studio环境下,该变量有下划线。