我正在使用DynamoDB来存储设备数据。对DynamoDB的调用将触发使用AlarmManager配置的Intent。我的代码如下:
MainActivity:
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getApplicationContext(),
"Pool_ID", // Identity Pool ID
Regions.US_EAST_1 // Region
);
AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentialsProvider);
在IntentService中调用的AsyncTask(通过AlarmManager触发):
private class SendData extends AsyncTask<String, Void, String> {
@Override
protected void onPostExecute(String s) {
sendSMS(s);
}
@Override
protected String doInBackground(String... params) {
try {
sendSMS("saving..."); // send to myself
Data data = new Data();
Data.setData(params[0]);
DynamoDBMapperConfig dynamoDBMapperConfig = new DynamoDBMapperConfig(DynamoDBMapperConfig.SaveBehavior.UPDATE);
DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(MainActivity.client, dynamoDBMapperConfig);
sendSMS("saving...");
dynamoDBMapper.save(data);
} catch (Exception e) {
Log.e(getClass().getSimpleName(), e.getMessage());
return "failed...";
}
return "success...";
}
}
当我的应用首次加载并运行时,我看到保存到DynamoDB的数据。几个小时后数据停止保存,我没有在日志中看到错误。有关DynamoDBMapper.save几个小时后停止工作的想法吗?
编辑1:添加了用于调试的sendSMS()方法。当我最初启动我的应用程序时,我收到发送,保存,成功的SMS消息。几个小时后,我只收到发送和保存的短信,我从未收到错误信息。
编辑2:将onPostExecute添加到AsyncTask