我知道对此有很多疑问,但我真的不知道我的错误在哪里。
I know there is a lot of questions about this but I really don't know where is my mistake.
我的服务已在AndroidManifest.xml文件中注册
My service is registered in the AndroidManifest.xml file
<manifest xmlns:android="schemas.android/apk/res/android" package="com.example.android.app" > ... <service android:name="com.example.android.app.ScheduledService"> </service> </application> </manifest>我的服务扩展了IntentService
My service extends IntentService
public class ScheduledService extends IntentService { public ScheduledService() { super("ScheduledService"); } @Override protected void onHandleIntent(Intent intent) { Log.d(getClass().getSimpleName(), "I ran!"); } }我的活动启动服务
public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(getClass().getSimpleName(), "Setting alarm!!"); AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent alarmIntent = new Intent(this, com.example.android.app.ScheduledService.class); PendingIntent pending = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 10 * 1000, pending); } }我在日志中看不到任何异常。
I don't see any exception in the logs. Is there something else I should do to setup my alarm?
推荐答案与文档, PendingIntent .getBroadcast()用于检索将执行广播的 PendingIntent ,例如调用 Context.sendBroadcast()。
As in documentation, PendingIntent.getBroadcast() is used to retrieve a PendingIntent that will perform a broadcast, like calling Context.sendBroadcast().
您需要调用 PendingIntent.getService(),它将开始 IntentService :
You need to call PendingIntent.getService() instead, which will start IntentService:
PendingIntent pending = PendingIntent.getService(this, 0, alarmIntent, 0);更多推荐
IntentService无法开始使用AlarmManager
发布评论