ユーザーの現在地を 1 時間ごとにサーバーに送信する単純なサービスを実装しようとしています。私のアプリにはログインActivity
と設定のアクティビティがあり、通常はバックグラウンドで動作しています。AlarmManager
私は自分の目的を達成するために使用し、うまく機能しますがreceiver
、アプリを強制的に停止すると機能しません。これを行うための私のコードは次のとおりです。
MyApplication.java
@Override
public void onCreate() {
super.onCreate();
startService();
}
private void startService(){
Intent receiver = new Intent(this, LocationAlaramReceiver.class);
PendingIntent intent = PendingIntent.getBroadcast(this, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), AlarmManager.INTERVAL_HOUR, intent);
}
AndroidManifest.xml
<receiver
android:name=".receiver.LocationAlarmReceiver">
</receiver>
LocationAlarmReceiver.java
public class LocationAlarmReceiver extends BroadcastReceiver
{
private final static String TAG = "LocationAlarmReceiver";
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "=========== onReceive ==============");
//Do something later
}
}
私のケースを見ると、AlarmManager
常に呼び出されることが保証されているようには見えません。LocationAlramReceiver
毎時間働き続けたい。どうすれば問題を解決できますか?