我正在制作一个聊天窗口,有两种方法,一种用于发送消息,另一种用于接收消息。我想当我点击发送按钮时,方法调用并将消息发送到服务器和后台线程创建。如果有任何响应消息,然后将该消息添加到列表中。我该怎么做?
我想如果有任何响应消息,那么响应消息调用一个线程,检查是否有任何消息接收,然后将其添加到列表视图中,如果没有,则不向列表中添加任何内容。
有人能帮我吗?
//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上显示该消息。
希望得到帮助。