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



我正在制作一个聊天窗口,有两种方法,一种用于发送消息,另一种用于接收消息。我想当我点击发送按钮时,方法调用并将消息发送到服务器和后台线程创建。如果有任何响应消息,然后将该消息添加到列表中。我该怎么做?

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

有人能帮我吗?

//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();  
      }
    }   

实现这一点的最佳方法是通过扩展AsyncTask类并覆盖以下方法来创建AsyncTask:

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

 protected Long doInBackground(URL... urls) {         }  

//如果您想在两者之间显示一些数据,则用于更新UI。在UI线程上运行

protected void onProgressUpdate(Integer... progress) {        }  

//用于UI的最终更新。在UI线程上运行

protected void onPostExecute(Long result) {         }

你可能还想看看官方文件http://developer.android.com/reference/android/os/AsyncTask.html

在这种情况下,我看到的是

你将有三节课。

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

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

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

现在,您将在Actual UI上显示该消息。

希望得到帮助。

最新更新