0

所以我正在处理一个活动,因为我想放入一个加载屏幕

当它进入加载屏幕时,应用程序首先检查用户是否已登录,以及他们是否不是错误屏幕加载。

在线程的末尾,我只有

handler.sendEmptyMessage(0);

对于处理程序,我有

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        dataAdapter.notifyDataSetChanged();
        pd.dismiss();
        if (badkey==1)
        {
            reloginDlog().show();
        }
    }
    };

pd 是一个进度对话框,而 badkey 是一个公共 int。

我在私有 Handler 行中收到一条警告,上面写着“这个 Handler 类应该是静态的,否则可能会发生泄漏 (MyActivity.1)”

那么有谁知道为什么这很糟糕以及我该如何解决它?

4

1 回答 1

0

尝试类似的事情:(与处理程序相关联的线程应该具有初始化的消息循环 -Looper.prepare()并且.loop()):

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    new Thread(new Runnable() {

        @Override
        public void run() {

            Looper.prepare();

            handler = new Handler() {

                public void handleMessage(Message msg) {

                    // process incoming messages here
                    //...

                    //destroy message cue when no longer needed 
                    if(noMoreMessagesToHandle) {

                        Looper.myLooper().quit();
                    }
                }
            };

            Looper.loop();

        }

    }).start();
于 2012-07-10T21:19:08.503 回答