如何设置触发定期服务的切换按钮?

时间:2012-09-30 13:35:56

标签: android service alarmmanager togglebutton

我需要在我的Android应用程序中实现以下功能:触发定期服务的切换按钮。

让我以更好的方式提出问题:我想要一个具有“开启”模式的切换按钮。在这种模式下,我想定期启动服务(例如每5分钟)。在“关闭”模式下,禁用定期服务。 我想我需要使用AlarmManager服务。

您可以向我提供指南(如果可能的话,还有代码)或者是一个很好的教程吗?

提前感谢

1 个答案:

答案 0 :(得分:0)

私人AlarmManager alarmManager; private PendingIntent pendingIntent;

使用此创建的方法点击切换按钮打开和关闭服务。 还要确保将AlarmManager用作单例。

private void setService() {

                try {
                    if (alarmManager != null) {
                        alarmManager.cancel(pendingIntent);
                    }
                } catch (Exception e) {

                    e.printStackTrace();
                }
                Intent intent = new Intent(this, MyBroadCastReceiver.class);

                pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

                alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); //
                        // 60 seconds i.e 1 min 
                long time = 60 * 1000;

                alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                        SystemClock.elapsedRealtime() + time, time, pendingIntent);

            }

要删除serviceUpdates,请使用以下方法:

 private void removeService() {
            try {
                if (alarmManager != null) {
                    alarmManager.cancel(pendingIntent);
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }

现在,Broadcast类应该如下所示:

public class MyBroadCastReceiver extends BroadcastReceiver {

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


        Log.d("test_log", "broadcast worked ");

    }
}

现在来了你的接收者的明确声明:

<receiver android:name=".MyBroadCastReceiver"></receiver>