Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何运行从服务器获取数据的后台线程,如果响应不为null,则在android中向listview添加数据_Android - Fatal编程技术网

如何运行从服务器获取数据的后台线程,如果响应不为null,则在android中向listview添加数据

如何运行从服务器获取数据的后台线程,如果响应不为null,则在android中向listview添加数据,android,Android,我正在创建一个聊天窗口,有两种方法,一种用于发送消息,另一种用于接收消息。当我单击“发送”按钮时,我希望创建一个方法调用并向服务器发送消息,如果有任何响应消息,则创建一个后台线程,然后将该消息添加到列表中。我如何才能做到这一点 我希望如果有任何响应消息,那么响应消息调用一个线程,检查是否有任何消息接收,然后将其添加到listview,如果没有,则不向列表添加任何内容 有人能帮我吗?最好的方法是通过扩展AsyncTask类并重写以下方法来执行AsyncTask: //用于从服务器获取数据,在单独的

我正在创建一个聊天窗口,有两种方法,一种用于发送消息,另一种用于接收消息。当我单击“发送”按钮时,我希望创建一个方法调用并向服务器发送消息,如果有任何响应消息,则创建一个后台线程,然后将该消息添加到列表中。我如何才能做到这一点

我希望如果有任何响应消息,那么响应消息调用一个线程,检查是否有任何消息接收,然后将其添加到listview,如果没有,则不向列表添加任何内容


有人能帮我吗?

最好的方法是通过扩展AsyncTask类并重写以下方法来执行AsyncTask:

//用于从服务器获取数据,在单独的线程中运行

 protected Long doInBackground(URL... urls) {         }  
//如果您想在其间显示一些数据,请更新UI。在UI线程上运行

protected void onProgressUpdate(Integer... progress) {        }  
//用于用户界面的最终更新。在UI线程上运行

protected void onPostExecute(Long result) {         }

您可能还想看看这方面的官方文档,我在本例中看到的是

你将有3节课

class1将扩展AsyncTask,并具有从服务器获取新消息的逻辑

class2将定期ping服务器以检查是否有任何新消息。 如果是,它将发送广播

class3将充当广播接收器。在接收广播时,它将执行class3以获取消息。onPostExecute方法将返回消息对象

现在,您将在实际的UI上显示该消息

希望对您有所帮助。

//onCreate
//onCreate
new BackGroundLoginTask().execute();


//async task

public class performBackgroundTask extends AsyncTask < Void, Void, Void >  
    {
      private ProgressDialog Dialog = new ProgressDialog(PlacesList.this);

      protected void onPreExecute() 
      {

             Dialog.setMessage("Downloading");
             Dialog.show();
      }

      protected Void doInBackground(Void... params) 
      {
         // write here the code to download  or to perform any background task.


         //perform background task
            return null;
    }

      protected void onPostExecute(Void unused) 
      {

          listview.setAdapter(new PlacesAdapter());
          Dialog.dismiss();  

      }

    }   
新建BackGroundLoginTask().execute(); //异步任务 公共类performBackgroundTask扩展了AsyncTask { private ProgressDialog=新建ProgressDialog(PlacesList.this); 受保护的void onPreExecute() { setMessage(“下载”); Dialog.show(); } 受保护的Void doInBackground(Void…参数) { //在这里编写代码以下载或执行任何后台任务。 //执行后台任务 返回null; } 受保护的void onPostExecute(未使用的void) { setAdapter(新的PlacesAdapter()); Dialog.dismise(); } }
你能给我举一个Asynk任务的例子吗?看看: