毎日午後 2 時にデータを更新するサービスをアプリで作成しようとしています。データをフェッチするサービスをトリガーする繰り返しアラームを設定したいと考えています。これは UI スレッドとは関係なく、アプリが閉じられていても機能するはずです。
サービスを開始できないようです。
アラームを作成するアクティビティのコードは次のとおりです
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 20); // HOUR
cal.set(Calendar.MINUTE, 0); // MIN
cal.set(Calendar.SECOND, 0); // SEC
Intent intent = new Intent(Main.this, VenueUpdater.class);
PendingIntent pintent = PendingIntent.getService(Main.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent);
それから私のサービスクラス
public class VenueUpdater extends Service{
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
Toast.makeText(this, "Create", Toast.LENGTH_SHORT).show();
Log.i("SERVICE", "onCreate");
}
@Override
public void onDestroy() {
Toast.makeText(this, "Destroy", Toast.LENGTH_SHORT).show();
Log.i("SERVICE", "onDestroy");
}
@SuppressWarnings("deprecation")
@Override
public void onStart(Intent intent, int startid) {
super.onStart(intent, startid);
Toast.makeText(this, "Start", Toast.LENGTH_SHORT).show();
Log.i("SERVICE", "onStart");
}
}
アプリケーションタグを閉じる直前のマニフェストで
<service android:enabled="true" android:name="services.VenueUpdater" />
</application>
サービスを使用した他の例とコードを確認しましたが、コードは問題ないように見えますが、まだ機能しません。また、同じアラームが複数回作成される可能性があるため、これを達成するためのより良い方法があるかどうか疑問に思っていますが、そうでないことを確認するために使用できる保留中の意図フラグがある可能性があります。