使用AlarmManager呼叫服务

时间:2016-07-31 03:55:34

标签: android android-service android-alarms android-broadcastreceiver

我创建了一个我想通过AlarmManager定期调用的服务。我已经编写了相同的代码,但它没有调用。如果我通过AlarmManager调用BroadcasrReciever,那么它可以正常工作。

以下是我的代码,

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_home);

        Intent alarmIntent = new Intent(this, LocationUpdateService1.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        manager.setRepeating(AlarmManager.RTC_WAKEUP, 20000, 11000, pendingIntent);

    }

我的服务类是,

public class LocationUpdateService1 extends Service {
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        Toast.makeText(getApplicationContext(), "I created", Toast.LENGTH_LONG);
        return  null;
    }
}

我最明确的档案,

<service
            android:name=".Services.LocationUpdateService1">
        </service>

我是否必须创建BroadcastReceiver类来调用我的服务? 我的代码有什么问题?为什么它没有定期打电话?

1 个答案:

答案 0 :(得分:2)

确保使用 PendingIntent.getBroadcast ,它不会起作用。改为使用getService(),如下所示:

PendingIntent pendingIntent = PendingIntent.getService(this, 0, alarmIntent, 0);