我是Android的新手,但我遇到了这个问题...... 我需要一个无限循环来在后台运行一些进程, 而另一个无限循环接受一些套接字连接, 然后当点击一个按钮时,我需要与某个服务器建立套接字连接。
我能找到的几乎所有示例和教程都展示了如何创建一个单独的线程。
我尝试使用runnable(这似乎在前台运行?)
Runnable r=new Runnable() {
public void run() {
while(true){}
}
}; r.run();
我尝试使用AsyncTask(这在后台运行,但每个活动只有一个AsyncTask?)
private class Run extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
}
}
但无论我做什么,我的程序只执行第一个线程。
我的问题是,是否有可能在一个活动中运行多线程多无限循环?如果是,怎么样?
答案 0 :(得分:5)
是的,你可以创建多个线程。 你必须使用以下代码
new Thread(new Runnable() {
public void run() {
while (true) {
//code something u want to do
Log.i("Thread", "Running parallely");
}
}
).start();
创建另一个线程使用相同的代码
答案 1 :(得分:0)
创建侦听网络连接的线程
new Thread(new Runnable() {
public void run()
{
ServerSocket s = new ServerSocket(PORT_NUMBER);
while(true)
{
Socket c = s.accept();
// read the socket
BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));
in.read();
}
c.close(); //close the socket
}
}).strat();
答案 2 :(得分:0)
有时您想从后台线程调用UI线程。你可以这样做:
Thread t = new Thread(new Runnable() {
public void run() {
//Do your background thing here
getActivity().runOnUiThread(new Runnable() {
public void run() {
//Update your GUI here
}
});
t.start();
getActivity看起来像这样:
public class YourClass extends AppCompatActivity{
private Activity getActivity(){
return this;
}
//Rest of class here
}