Android - 如何创建多个线程以在后台运行?

时间:2012-05-19 12:16:52

标签: android multithreading

我是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) {
  }
}

但无论我做什么,我的程序只执行第一个线程。

我的问题是,是否有可能在一个活动中运行多线程多无限循环?如果是,怎么样?

3 个答案:

答案 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
          }