android中的Java线程回调
不管什么原因,我都无法让我的回拨正常工作。基本上,我将使用我创建的tcp服务器进行群聊。我试图用java创建一个线程,然后使用回调将从套接字获得的信息提供给主活动 我当前收到的错误:android中的Java线程回调,java,android,callback,Java,Android,Callback,不管什么原因,我都无法让我的回拨正常工作。基本上,我将使用我创建的tcp服务器进行群聊。我试图用java创建一个线程,然后使用回调将从套接字获得的信息提供给主活动 我当前收到的错误: 12-04 02:53:05.969 15143-15169/com.AndroidBabble E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-4340 java.lang.RuntimeException: Can't create handler inside threa
12-04 02:53:05.969 15143-15169/com.AndroidBabble E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-4340
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
但我不确定如何执行looper.prepare,当我执行时,它似乎不起作用-因此我想知道如何在我的代码上下文中实现looper.prepare
这是我的密码:
public interface ResponseEvent {
public void responseEvent();
}
主要
客户任务
最后,我希望通过响应事件传递一个字符串,它将在主事件中获得它
public void responseEvent(){
Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
}
在线程的上下文中调用responseEvent。但是Toast必须由UI线程处理。由于responseEvent是在活动中定义的,您可以使用RunNuithRead在UI线程队列中发布Runnable,解释了如何使用回调接口,我认为这对您来说可能是一个有趣的读物。您可以使用Looper从后台线程到UI线程进行通信。。试试这个:
public void responseEvent(){
// Defines a Handler object that's attached to the UI thread
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
}
});
}
使用Java接口作为回调将是一个很好的开始。我已经阅读了这篇文章,在我的代码中实现的大部分代码也出现在您链接的帖子中。。。
public void responseEvent(){
Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
}
public void responseEvent(){
// Defines a Handler object that's attached to the UI thread
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
}
});
}