我想创建一个应该将一些JSON数据发送到远程服务器的小应用程序。
我需要注意的情况,例如当用户没有互联网或只是无法发送数据时,手机将重试,直到数据从手机发送并由服务器接收为止。
有这样的模式吗?一般模式还是Android特定的?
提前多多感谢!
答案 0 :(得分:1)
我正在使用超时时间戳来知道是否未发送消息(在这种情况下是用于串行通信):
private TimerTask WriterTask = new TimerTask() {
@Override
public void run() {
wasStarted = true;
synchronized (MessageQueue) {
if (mSIOManager != null && mSIOManager.getmWriteBufferSize() == 0
&& MessageQueue.size() > 0) {
QueueEntry item = MessageQueue.peek();
if (item != null && !item.sent) {
timeoutTimer = System.currentTimeMillis();
mSIOManager.writeAsync(item.Msg.getBytes());
Log.v(TAG, HexDump.dumpHexString(item.Msg.getBytes())
+ " - Written to Buffer");
item.sent = true;
}
}
try {
if (System.currentTimeMillis() - timeoutTimer > TIMEOUT && MessageQueue.peek().sent) {
Log.i(TAG, "Message timed out: " + HexDump.dumpHexString(MessageQueue.poll().Msg.getBytes()));
}
} catch (NullPointerException e) {
// Queue empty
}
}
}
};
因此,不是记录事件,而是可以从ie增加任务的心率。 100至10000毫秒
Timer mTimer = new Timer();
mTimer.scheduleAtFixedRate(WriterTask,100L,10000L);
如果您的数据最终发送,则只需取消时间表
mTimer.cancel();