尝试返回地面服务从Sqlite数据库中获取数据发送到Web,同时列表视图显示来自Sqlite数据库的数据不起作用

时间:2015-05-16 07:00:49

标签: android sqlite

帮我解决问题,

每10分钟使用后台服务将Sqlite数据库数据同步到Web服务,并行Listview从sqlite数据库中获取相同的表数据。

每当服务从本地数据库获取数据到Web服务时,Listview都不显示数据。

同样OnClick listview项目整个数据将在下一页显示,从本地数据库中获取,显示空白页面。

完成后台服务后,它会在列表视图和下一个视图页面中显示数据。

列表视图页面--->在项目视图页面上。

iam使用Cursor adpter从本地数据库获取数据到listview。

this link i have referred

1 个答案:

答案 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