AlarmManagerが起動したときに作成する必要があるサービスを作成したという問題があります。そして実際には開始しています(onStartCommandが呼び出され、トーストが表示されます)が、ログに同時に表示されます:
09-19 02:48:32.537: I/ActivityManager(1983): START {flg=0x4 cmp=com.my.app/.syncService.SyncService (has extras)} from pid -1
09-19 02:48:39.662: W/ActivityManager(1983): Unable to start service Intent { act=com.my.app.syncService.SyncService flg=0x4 (has extras) }: not found
意図:
Intent intent = new Intent("com.my.app.syncService.SyncService");
PendingIntent pendingIntent = PendingIntent.getService(this, 12345, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000*30, pendingIntent);
私のサービスは次のようになります。
public class SyncService extends Service{
@Override
public void onCreate() {
Log.d("SyncService", "onCreate");
Log.d("SyncService", "onCreate");
Log.d("SyncService", "onCreate");
super.onCreate();
Toast.makeText(this, "Debug: SyncService created", Toast.LENGTH_LONG).show();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Debug: SyncService onStartCommand", Toast.LENGTH_LONG).show();
return super.onStartCommand(intent, flags, startId);
}
}
AndroidManifest:
<application>
...
<service android:enabled="true" android:name="com.my.app.syncService.SyncService"/>
</application>
ちょっと変じゃないですか?onCreate getは1回だけ呼び出されます。これは私には理にかなっていますが、残りは?