在android api =<中保持活跃的服务23

时间:2016-03-14 18:18:29

标签: android android-service android-5.0-lollipop

如何在Android API 23中使用AlarmManager保持服务的活动?

我需要每1分钟更新一次方法。 这是我的服务:

public class ApplicationService extends Service {

    @Override
    public IBinder onBind(Intent paramIntent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(ApplicationService.class.getName(), "start");
        UpdateUtils updateUtils = UpdateUtils.getInstance(getApplicationContext());

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_DATE_CHANGED);
        intentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
        intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
        intentFilter.addAction(Intent.ACTION_SCREEN_ON);
        intentFilter.addAction(Intent.ACTION_TIME_TICK);
        registerReceiver(new BroadcastReceivers(), intentFilter);

        Utils utils = Utils.getInstance(getBaseContext());
        utils.loadApp();
        updateUtils.update(true);
        return START_STICKY;
    }
}

2 个答案:

答案 0 :(得分:0)

抱歉无法理解您的问题,为什么需要警报管理器来保持服务的活动?

服务始终在后台运行。如果由于内存限制而被杀死,您可以通过在onBind()方法中将其定义为STICKY来要求OS重新启动它

更新

那么你不想让你的服务保持活力。我的意思是,你陈述查询的方式令人困惑。我现在理解的是,你希望在每个&xx; xx'之后执行一些操作。时间。

您可以执行以下操作: 使用setExact()的{​​{1}}方法。执行接收者AlarmManager中所需的操作。作为onReceive()的最后一步的一部分,再次使用setExact()方法。

如果执行时间不准确,您也可以使用onReceive()

答案 1 :(得分:0)

如果您担心应用程序被锁定,您是否尝试过使用唤醒锁?

http://developer.android.com/reference/android/os/PowerManager.html