其他分享
首页 > 其他分享> > android-使用警报管理器启动服务

android-使用警报管理器启动服务

作者:互联网

我正在尝试使用警报管理器启动服务.我已经尝试了一切,但是还没有开始.我正在从活动的按钮侦听器中调用以下提到的代码.

    private void setAlarmManager(String interval) throws NumberFormatException, IOException
    {
        AlarmManager service = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
        Intent i = new Intent(getApplicationContext(), MyService.class);

        PendingIntent pending = PendingIntent.getBroadcast(getApplicationContext(),
                                                           0,
                                                           i,
                                                           PendingIntent.FLAG_CANCEL_CURRENT);
        Calendar cal = Calendar.getInstance();

        cal.add(Calendar.MINUTE, Integer.valueOf(interval));
        service.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
                                    (Integer.valueOf(interval) * 60000), pending);
    }

和我的清单看起来像:

<service android:enabled="true" android:name="com.pack.android.service.MyService"
            />

我正在尝试按照用户指定的时间(以分钟为单位)启动服务.但是我的服务永远不会被致电.

如果我使用以下代码致电该服务,则它可以正常工作.我的项目目标版本是16.

getApplicationContext().startService(i);

解决方法:

将PendingIntent.getBroadcast更改为PendingIntent.getService以使用PendingIntent启动服务:

PendingIntent pending = PendingIntent.getService(getApplicationContext(),
                                     0,
                                     i,
                                   PendingIntent.FLAG_CANCEL_CURRENT);

标签:android-service,alarmmanager,android
来源: https://codeday.me/bug/20191031/1974983.html