我正在尝试使用Alarm Manager启动服务。我尝试了一切,但它还没有开始。我从一个活动的按钮监听器调用下面提到的代码。
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);
答案 0 :(得分:4)
将PendingIntent.getBroadcast
更改为PendingIntent.getService
,以便使用PendingIntent
启动服务:
PendingIntent pending = PendingIntent.getService(getApplicationContext(),
0,
i,
PendingIntent.FLAG_CANCEL_CURRENT);