用于后台服务的Android方法实现

时间:2015-03-28 08:43:15

标签: android sqlite background-process background-service

在这种情况下。

我有一个带数据库的应用程序。 数据库必须每X分钟更新一次。 数据位于Web服务器上。 与服务器的通信将需要大约10个httpget请求。 到目前为止,已经完成了后台服务和HTTPget函数,用于获取新信息和更新数据库。 问题是它必须在X分钟后在后台更新。 我不确定是什么以及如何实现这一点。

1.使用延迟功能并每隔X分钟运行一次? 2.使用睡眠线程并每隔X分钟将其唤醒一次?

还是其他什么?

2 个答案:

答案 0 :(得分:1)

使用警报管理器在一段时间后触发事件,在这种情况下,您必须在每x分钟后开始向服务器发送请求。请参阅此处http://www.learn-android-easily.com/2013/06/scheduling-task-using-alarm-manager.html

  

repeating alarm android

答案 1 :(得分:1)

使用Intent Service并使用alarm manager每隔X分钟定期运行。

使用Broadcast Receiver触发意向服务,以便即使用户在手机上开机,服务也会继续运行

步骤1.创建您的意图服务

public class SimpleIntentService extends IntentService {


    public SimpleIntentService() {
        super("SimpleIntentService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
 // TODO your task

    }
}

步骤2.使用AlarmManager重复待处理的服务意图

Intent myIntent = new Intent(context, StartMyServiceReceiver.class);

        PendingIntent pi = PendingIntent.getBroadcast(context, 0, myIntent, 0);

        alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                SystemClock.elapsedRealtime(),
                AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi);

步骤3.为了确保在电话再次启动时关闭电源后服务仍然运行,请创建PowerEventReceiver

public class PowerEventReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {


        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
            //start your service
        }

    }
}

P.S:请记住在AndroidManifest中注册您的服务和接收器。