Android: IntentService启动但是onHandleIntent没有执行
Android: IntentService starts but onHandleIntent is not executed
我希望 IntentService 每 10 秒 运行 并放置一个简单的调试行。这是我的代码:
在清单中:
<service android:name="com.test.test.TheService" />
创建警报管理器以每 10 秒调用一次服务
am.setRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(),
10000,
servicePendingIntent);
服务本身
public class TheService extends IntentService {
public static int SERVICE_ID = 1;
public TheService() {
super("TheService");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.d("service","I'm in on Handle Intent");
}
}
在模拟器的监视器中,我每 10 秒就会看到这条线
1270-1297/system_process I/ActivityManager: START u0 {flg=0x4 cmp=com.test.test/.TheService (has extras)} from pid -1
尽管上面写着"has extras",但实际上我并没有添加任何额外内容。一般来说,它看起来很好,但调试永远不会打印出来,调试代码上的断点永远不会停止,就好像服务每 10 秒启动一次,但它什么也没做。
我错过了什么?
您必须创建一个 Intent
来调用您的 Service
,并使用方法 getService()
将其放入 PendingIntent
,如下所示:
Intent serviceIntent = new Intent(context, TheService.class);
PendingIntent pendingIntent = PendingIntent.getService(this,0, intent, 0);
我希望 IntentService 每 10 秒 运行 并放置一个简单的调试行。这是我的代码:
在清单中:
<service android:name="com.test.test.TheService" />
创建警报管理器以每 10 秒调用一次服务
am.setRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(),
10000,
servicePendingIntent);
服务本身
public class TheService extends IntentService {
public static int SERVICE_ID = 1;
public TheService() {
super("TheService");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.d("service","I'm in on Handle Intent");
}
}
在模拟器的监视器中,我每 10 秒就会看到这条线
1270-1297/system_process I/ActivityManager: START u0 {flg=0x4 cmp=com.test.test/.TheService (has extras)} from pid -1
尽管上面写着"has extras",但实际上我并没有添加任何额外内容。一般来说,它看起来很好,但调试永远不会打印出来,调试代码上的断点永远不会停止,就好像服务每 10 秒启动一次,但它什么也没做。
我错过了什么?
您必须创建一个 Intent
来调用您的 Service
,并使用方法 getService()
将其放入 PendingIntent
,如下所示:
Intent serviceIntent = new Intent(context, TheService.class);
PendingIntent pendingIntent = PendingIntent.getService(this,0, intent, 0);