在Android中尝试多线程时为什么我会收到处理程序警告?

时间:2012-07-10 21:09:06

标签: android static warnings handler

所以我正在线程化一个活动,因为我想放入一个加载屏幕

当它放在加载屏幕上时,应用程序首先检查用户是否已登录以及是否加载了错误屏幕。

在线程的最后我只有

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类应该是静态的,否则可能会发生泄漏(MyActivity.1)”

所以有人知道为什么这是坏的以及我如何解决它?

1 个答案:

答案 0 :(得分: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();