電話の起動時に呼び出される次のブロードキャスト レシーバーがあり ( Bootreciever.java
)、繰り返しアラームを使用して断続的に実行されるサービスを開始しようとしています。
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"Inside onRecieve() :D" , Toast.LENGTH_LONG).show();
Log.d(getClass().getName(), "Inside onRecieve() :D");
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, MyService.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 3000, 1000, pi);
}
基本的に、私は繰り返しアラームを設定して、3 秒間トリガーし、その後は 1 秒ごとにトリガーします。起動完了ブロードキャストは正常に受信されますが、サービスは開始されません。MyService.java
次のようになります。
public class MyService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "Hello from MyService!", Toast.LENGTH_LONG);
Log.d(getClass().getName(), "Hello from MyService!");
stopSelf();
return super.onStartCommand(intent, flags, startId);
}
サービスを開始するときに何が間違っていますか?
Logcat は何も教えてくれません。サービスはマニフェストで定義されています。このサービス自体は、 using を使用して呼び出すとstartService()
機能しますが、 内で使用すると失敗するようですPendingIntent
。