Java Android处理程序泄漏

Java Android处理程序泄漏,java,android,handler,Java,Android,Handler,在我的android应用程序中,我向联系人发送消息。。它显示“这个处理程序类应该是静态的,否则可能会泄漏”。我的应用程序在手机上崩溃了,但它在模拟器上工作,我给出了下面的代码,请检查一下,如果有任何错误,请提供帮助 progresshandler = new Handler() { public void handleMessage(Message msg) { //progressDialog.d

在我的android应用程序中,我向联系人发送消息。。它显示“这个处理程序类应该是静态的,否则可能会泄漏”。我的应用程序在手机上崩溃了,但它在模拟器上工作,我给出了下面的代码,请检查一下,如果有任何错误,请提供帮助

 progresshandler = new Handler()
        {
            public void handleMessage(Message msg)
            {
                //progressDialog.dismiss();
                //Toast.makeText(SendMessagesActivity.this, "Messages Sent",Toast.LENGTH_LONG).show();
                new ProgressTask().execute();

            }
        };

为避免处理程序泄漏,请创建扩展处理程序类的自定义类,如下所示:

 // Handler of incoming messages from clients.
     
    private static class IncomingHandler extends Handler {
        private WeakReference<YourActivity> yourActivityWeakReference;

        public IncomingHandler(YourActivity yourActivity) {
            yourActivityWeakReference = new WeakReference<>(yourActivity);
        }

        @Override
        public void handleMessage(Message message) {
            if (yourActivityWeakReference != null) {
                YourActivity yourActivity = yourActivityWeakReference.get();
    
Edited :          new ProgressTask().execute(); 
//                switch (message.what) {
//                }
            }
        }
    }
编辑:

IncomingHandler progresshandler = new IncomingHandler(YourActivity.this);
        if (editMessage.getText().toString().length() > 0) {
            SendMessagesThread thread = new SendMessagesThread(progresshandler);
            thread.start(); 
            // progressDialog.show();
        }
编辑:

IncomingHandler progresshandler = new IncomingHandler(YourActivity.this);
        if (editMessage.getText().toString().length() > 0) {
            SendMessagesThread thread = new SendMessagesThread(progresshandler);
            thread.start(); 
            // progressDialog.show();
        }
  • 在活动中声明此任务:

    私有进程任务进程任务

  • 在onCreate()中创建它的实例

    progressTask=新的progressTask()

  • 更改输入处理器中的行:

    yourActivity.progressTask.execute()


  • 谢谢

    if(editMessage.getText().toString().length()>0){SendMessagesThread=new SendMessagesThread(progresshandler);thread.start();//progressDialog.show();}实际上,从这里我称之为进步handler@Jocheved:欢迎..也要小心撞车@乔切维德:是的,如果这个答案对你有帮助,那么就标记为已接受,这样其他人就可以发现它有用了。。!!新建ProgressTask().execute();