Android IntentService只执行一次

时间:2014-02-08 16:05:54

标签: android intentservice

我正在使用Android AlarmManger安排IntentService在很短的时间间隔后运行。

这是我的AlarmManger:

static void setNextSchedule(Context ctx, long interval){
        AlarmManager manager = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
        Intent nIntent = new Intent(ctx, DService.class);
        PendingIntent pIntent = PendingIntent.getActivity(ctx, 1, nIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        manager.setRepeating(AlarmManager.ELAPSED_REALTIME, 
                SystemClock.elapsedRealtime() + interval, interval, pIntent);

        Log.i(ScheduleAlarm.class.getSimpleName(), "Next alarm set");
    }

我的IntentService:

@Override
    protected void onHandleIntent(Intent intent) {
        Log.i(DService.class.getSimpleName(), "Service starting");

        ScheduleAlarm.setNextSchedule(getApplicationContext(), 15000);
    }

目前它只包含测试代码。 现在,一旦应用程序启动,此代码将成功运行且没有任何问题,但在15秒后它将表明该服务正在logcat中启动,但代码不会执行

如何让intenet服务在每次运行时执行onHandleIntent内的代码?

由于

1 个答案:

答案 0 :(得分:1)

使用PendingIntent时,工厂方法需要与Intent所用的组件类型相匹配:

  • 如果您的Intent指向某项活动,请使用getActivity()

  • 如果您的Intent指向某项服务,请使用getService()

  • 如果您的Intent指向BroadcastReceiver,请使用getBroadcast()

  • 如果您的Intent指向上述任何一项,请直接进入监狱,不要通过Go!,不要收取200美元: - )