帮我解决问题,
每10分钟使用后台服务将Sqlite数据库数据同步到Web服务,并行Listview从sqlite数据库中获取相同的表数据。
每当服务从本地数据库获取数据到Web服务时,Listview都不显示数据。
同样OnClick listview项目整个数据将在下一页显示,从本地数据库中获取,显示空白页面。
完成后台服务后,它会在列表视图和下一个视图页面中显示数据。
列表视图页面--->在项目视图页面上。
iam使用Cursor adpter从本地数据库获取数据到listview。
答案 0 :(得分:0)
亲爱的:使用定期服务。我有同样的问题,我这样解决了。就我而言,这就是代码。
服务代码:
public class PeriodicService extends Service {
private static final long TIMEREQ = 10000 * 60;// 10 mints
public static String LOG = "Log";
private final Context mContext;
public UpdateServices(Context context) {
this.mContext = context;
}
public UpdateServices() {
super();
mContext = UpdateServices.this;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
Log.i(LOG, "Service started");
// save in sqlite after 10 mints
DatabaseManger db = new DatabaseManger(mContext);
db.open();
db.insert("anything", "data");
db.close();
// upload data to somewhere server
new CreateNewProduct(this).execute();
return START_NOT_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
Intent ishintent = new Intent(this, UpdateServices.class);
PendingIntent pintent = PendingIntent.getService(this, 0, ishintent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pintent);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
TIMEREQ, pintent);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Intent ishintent = new Intent(this, UpdateServices.class);
PendingIntent pintent = PendingIntent.getService(this, 0, ishintent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.cancel(pintent);
Toast.makeText(this, "service stoped", Toast.LENGTH_SHORT).show();
}
}
你可以得到from here 启动和停止服务
致电开始服务。根据服务的生命周期,当服务停止时调用destroy方法。停止服务后,根据您的选择,服务延迟一段时间不会使用挂起意图。
来自活动电话
btn_startService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startService(new Intent(About.this, UpdateServices.class));
}
});
btn_stopService.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopService(new Intent(About.this, UpdateServices.class));
}
});
转到列表视图刷新listadapter 。