Java Android处理程序泄漏
在我的android应用程序中,我向联系人发送消息。。它显示“这个处理程序类应该是静态的,否则可能会泄漏”。我的应用程序在手机上崩溃了,但它在模拟器上工作,我给出了下面的代码,请检查一下,如果有任何错误,请提供帮助Java Android处理程序泄漏,java,android,handler,Java,Android,Handler,在我的android应用程序中,我向联系人发送消息。。它显示“这个处理程序类应该是静态的,否则可能会泄漏”。我的应用程序在手机上崩溃了,但它在模拟器上工作,我给出了下面的代码,请检查一下,如果有任何错误,请提供帮助 progresshandler = new Handler() { public void handleMessage(Message msg) { //progressDialog.d
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();
}
谢谢if(editMessage.getText().toString().length()>0){SendMessagesThread=new SendMessagesThread(progresshandler);thread.start();//progressDialog.show();}实际上,从这里我称之为进步handler@Jocheved:欢迎..也要小心撞车@乔切维德:是的,如果这个答案对你有帮助,那么就标记为已接受,这样其他人就可以发现它有用了。。!!新建ProgressTask().execute();