0
MyBroadCast服務不重複
公共類BackupBroadCast擴展WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, BackupService.class);
context.startService(i);
}
}
爲MyService
public class BackupService extends Service {
public int REQUEST_CODE = 99999;
@Override
public void onCreate() {
Log.d("Service", "onCreate");
ativarTemporizador();
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//HERE COME THE CODE TO EXECUTE EVERY x time the alarm call the service
Log.d("Service", "onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void ativarTemporizador() {
Log.d("Service", "Start Timer");
Intent intent = new Intent(getApplicationContext(), BackupBroadCast.class);
final PendingIntent pIntent = PendingIntent.getBroadcast(this, REQUEST_CODE,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() /*Start Right NOW*/,
(10000 /*Repeat Every 10seconds*/), pIntent);
}
}
我如何開始在App啓動服務:
Intent i = new Intent(this, BackupService.class);
startService(i);
但UNKN嗷嗷原因報警不執行每次10秒(像我配置)服務
它有一個隨機時間
04-22 23:13:47.118 -> onCreate
04-22 23:13:47.118 -> Start Timer
04-22 23:13:47.118 -> onStartCommand
04-22 23:14:10.758 -> onStartCommand
04-22 23:15:10.868 -> onStartCommand
04-22 23:16:11.288 -> onStartCommand
04-22 23:16:48.998 -> onStartCommand
04-22 23:18:11.498 -> onStartCommand
我怎麼可以讓它運行按需每x時間(我會給用戶選項做在一個預定的時間備份)
請參閱文檔爲['AlarmManager'(http://developer.android.com/reference/android/app/AlarmManager.html)。從KitKat開始,如果你的'targetSdkVersion'> = 19,'setRepeating()'是不精確的。您需要使用'setExact()',並在每次觸發時再次將鬧鐘設置爲所需的時間間隔。 –