不管什么原因,我的回拨电话打不通。基本上,我将使用我创建的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 thread that has not called Looper.prepare()
public interface ResponseEvent {
public void responseEvent();
}
public class Main extends Activity implements ResponseEvent{
Button btn;
ClientTask client;
String LOCALHOST = "localhost";
int PORT = 5678;
Thread thread;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button);
// Thread thread = new Thread(client = new ClientTask(this, LOCALHOST, PORT));
client = new ClientTask(this, LOCALHOST, PORT);
}
public void button(View v){
thread = new Thread(client);
thread.start();
}
public void responseEvent(){
Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
}
}
客户端任务
public class ClientTask implements Runnable{
public Handler mHandler;
private ResponseEvent re;
BufferedReader in;
Socket socket;
String HOSTNAME;
int PORT;
String scan;
public ClientTask(ResponseEvent event, String HOSTNAME, int PORT){
re = event;
this.HOSTNAME = HOSTNAME;
this.PORT = PORT;
}
public void run(){
// try {
// socket = new Socket(HOSTNAME, PORT);
// in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
re.responseEvent();
// } catch (IOException ex) {
}
}
最后,我想通过响应事件传递一个字符串,它将获得它的主要内容。
public void responseEvent(){
Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
}
在线程的上下文中调用responseevent
。但是toast
必须由UI线程处理。由于responseevent
是在活动内部定义的,您可以使用runOnUiThread在UI线程队列中发布一个Runnable,
问题内容: 我的android类中有以下线程。我如何从线程中获取err的值??? 我希望该值是方法的返回值,但是对于我一生来说,我无法获得该值… 问题答案: 您可以通过两种方式实现这一目标。 在 糟糕的 方式。创建一个可变对象,如整数 列表 ,然后让Thread(可运行)写入列表。您可以在外部类/方法的列表中访问值。 使用而不是。一个可以返回值
除了隐式用户界面线程之外,我还制作了两个线程(可运行的),它们内部都有一个 while 循环,我定期检查我实现的消息队列中的更新。 一开始的问题是这两个while循环是无限的,它们变化得如此之快,如此之多,几乎耗尽了设备的所有CPU。所以我考虑让while循环在每个周期后Hibernate大约100毫秒,让其他线程完成它们的工作,但是我遇到了另一个问题: 现在,问题是线程Hibernate了100
我正在开发应用程序(Matt的traceroute windows版本http://winmtr.net/),它创建了多线程,每个线程都有自己的进程(执行ping命令)。 使用阻塞队列(在任务执行之前保留任务) 平丝。JAVA 现在如果我创建多个线程,比如在一个循环中超过500个线程,并在池执行器中执行 执行线程 我确实知道LinkedBlockingQueue在执行任务之前持有任务。每个线程的进
问题内容: 在android中,我正在创建用于url连接的线程。在线程中,我将响应消息存储在全局声明的字符串中。当我访问method方法时,它返回null。 当我调用该方法时,它返回null。 问题答案: 您真的只想使用它,尝试一下
问题内容: 今天有人在采访中问我有关Java线程概念的问题吗?问题是… 什么是线程? 我们为什么要穿线? 线程上的实时示例。 我们可以在Spring框架服务类中创建线程吗? flex可以调用线程吗? 除了Thread的定义之外,我没有回答任何问题,我也是从互联网中学到的。 谁能对此清楚地解释我。 更新 : 线程和普通的Java类之间有什么区别。为什么我们需要线程…我可以在线程中执行业务逻辑吗?我可
问题内容: 我有一个方法。值在内部被更改,我想将其返回给该方法。有没有办法做到这一点? 问题答案: 可以使用局部最终变量数组。该变量必须是非基本类型,因此可以使用数组。你还需要同步两个线程,例如使用CountDownLatch: 你也可以这样使用an Executor和a Callable: