使用IntentService的AsynkTask作为消息传递应用程序

时间:2016-05-29 19:26:57

标签: android android-asynctask android-sqlite

我正在开发一个消息应用程序。每次用户发送消息时,消息都会保留在本地数据库中,然后在通过POST中的AsynkTask将消息发送到服务器之前,它会验证数据库中是否还有其他状态为“未发送”的消息。如果存在具有此状态的消息,则保留最后一条消息并创建一个循环以通过消息发送消息,为每个消息创建一个异步任务。如果服务器响应OK,则消息的状态将更改为数据库中的“已发送”。如果没有状态为“not_sent”的消息,则通过asynk任务将当前消息发送到服务器。 问题是,每次用户发送消息时,都会完成此验证,并在检查第一个AsynkTask是否派遣其他任务之前创建新的asynk任务。 我应该创建一个服务并发送所有消息以便在其中发送吗?或者我应该使用SerialExecutor选项调用AsynkTask吗?

2 个答案:

答案 0 :(得分:0)

当消息被发送到服务器时,你应该添加另一个'sending'状态(这样第二个AsyncTask就不会处理第一个AsyncTask当前发送的消息)

答案 1 :(得分:0)

从API11 AsyncTask为每个应用程序使用执行器,因此任务以串行方式运行。 可能是数据库同步的问题。

至于架构服务是聊天应用程序的不错选择。