2

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

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

我的问题是,是否可以在一个活动中让多线程运行多无限循环?如果是,如何?

4

3 回答 3

6

是的,您可以创建多个线程。您可以实现 Runnable 接口。

    new Thread(new Runnable() {
        public void run() {
            while (true) {
                //code something u want to do & it will run infinitely.
                //Remove the infinite loop for running finite set of operations.        
                Log.i("Thread", "Running parallely");
            }
        }
    }).start();

另外,请注意上述线程无限期运行。如果要进行任何有限操作,只需将代码放在 run 方法中即可。

于 2012-05-19T13:38:02.900 回答
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();
于 2012-05-19T13:52:03.673 回答
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
          }
于 2017-07-05T12:39:56.677 回答