我正在尝试从我的Android app.it上传一些消息数据到服务器上传好服务器数据,但问题是,每次应用程序启动时都会上传所有消息数据。我只想上传那些消息以前不会上传的数据。如何做?
以下是我在服务器上获取和上传消息数据的代码:
getBBox
如果有人想了解更多信息,请询问。
答案 0 :(得分:1)
在column
中再创建一个table
并存储数据,例如是否已上传。并上传未上传的数据。
答案 1 :(得分:1)
将最近收到的消息日期保存在SharedPreferences
中,并在query
中设置条件,以便选择在该日期之后收到的消息。
String dateFromSharedPreferences="2000-01-01";
try{
String dateFromSharedPreferences=getActivity().getPreferences(Context.MODE_PRIVATE);
dateFromSharedPreferences=sharedPref.getString("LastMsgDate", "2000-01-01");
catch(Exception ex){}
Cursor cursor = cr.query(uri, projection, "(body"+" LIKE '%"+smsBuilder1+"%'or+" + "body"+" LIKE '%"+smsBuilder2+"%') and date>'"+dateFromSharedPreferences+"'", null, "date desc");
请勿忘记将当前上次收到的短信日期保存在同一SharedPreferences
while (cursor.moveToNext() && i++ < 20) {
if(i==1) saveDateToSharedPreferences(cursor.getString(cursor.getColumnIndex("date")))
//other codes here
}
saveDateToSharedPreferences函数将如下
function saveDateToSharedPreferences(String LastMsgDate){
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("LastMsgDate", LastMsgDate);
editor.commit();
}
答案 2 :(得分:1)
所以,你在这里处理的是本地缓存,请注意,这个答案将为你提供一种处理它的方法,编码取决于你,你发布的代码似乎取决于你任务,这是你的选择:
SharedPreferences
。 SharedPreferences
是一个选项,但是 - 它更适合单个变量,或者例如,序列化为JSON
字符串的对象。
在您的情况下,创建和维护本地(在电话本身,客户端)数据库可能会更好 - 因为您正在维护一个消息记录,这个记录很大,可能达到数十个数字,你提到过你不是在创建一个自定义表 - 你应该,并且由于你的代码表明那里有一个db,这通常是我会这样做的:
所有这些都需要客户端工作和服务器端工作,并且可能需要来自服务器端/数据库人员的一些帮助,并且再次 - 这可能是类似于聊天消息缓存的流程,并且可能会大大调整为效率编码时。
希望这有助于。