never ending service android
package dev .malikkurosaki .bestlocation ;
import android .app .AlarmManager ;
import android .app .PendingIntent ;
import android .app .Service ;
import android .content .Context ;
import android .content .Intent ;
import android .content .IntentFilter ;
import android .os .CountDownTimer ;
import android .os .Handler ;
import android .os .IBinder ;
import android .os .SystemClock ;
import android .util .Log ;
import com .google .firebase .database .FirebaseDatabase ;
import java .util .Random ;
import androidx .annotation .Nullable ;
public class MyService extends Service {
private BatteryReceiver batteryReceiver ;
@ Override
public void onCreate () {
super .onCreate ();
Log .d ("myLog" , "Service: onCreate" );
//% BATTERY LISTENER
batteryReceiver = new BatteryReceiver ();
registerReceiver (batteryReceiver ,
new IntentFilter (Intent .ACTION_BATTERY_CHANGED ));
}
@ Override
public int onStartCommand (Intent intent , int flags , int startId ) {
Log .d ("myLog" , "Service: onStartCommand" );
Handler handler = new Handler ();
handler .postDelayed (new Runnable () {
@ Override
public void run () {
int idnya = new Random ().nextInt (100 - 1 )+1 ;
FirebaseDatabase .getInstance ().getReference ().child ("lokasi/contoh" ).setValue (String .valueOf (idnya ));
handler .postDelayed (this ,5000 );
}
},5000 );
return START_STICKY ;
}
@ Override
public void onTaskRemoved (Intent rootIntent ) {
Log .d ("myLog" , "Service: onTaskRemoved" );
Intent restartService = new Intent (getApplicationContext (), this .getClass ());
restartService .setPackage (getPackageName ());
PendingIntent restartServicePI = PendingIntent .getService (
getApplicationContext (), 1 , restartService ,
PendingIntent .FLAG_ONE_SHOT );
AlarmManager alarmService = (AlarmManager ) getApplicationContext ().getSystemService (Context .ALARM_SERVICE );
alarmService .set (AlarmManager .ELAPSED_REALTIME , SystemClock .elapsedRealtime () + 1000 , restartServicePI );
/*if (Build.VERSION.SDK_INT <= 19) {
Intent restart = new Intent(getApplicationContext(), this.getClass());
restart.setPackage(getPackageName());
startService(restart);
}*/
super .onTaskRemoved (rootIntent );
}
@ Override
public void onDestroy () {
super .onDestroy ();
Log .d ("myLog" , "Service: onDestroy" );
unregisterReceiver (batteryReceiver );
}
@ Nullable
@ Override
public IBinder onBind (Intent intent ) {
return null ;
}
}
package dev .malikkurosaki .bestlocation ;
import android .app .AlarmManager ;
import android .app .PendingIntent ;
import android .content .BroadcastReceiver ;
import android .content .Context ;
import android .content .Intent ;
import android .os .BatteryManager ;
import android .util .Log ;
import android .widget .Toast ;
public class BatteryReceiver extends BroadcastReceiver {
@ Override
public void onReceive (Context context , Intent intent ) {
int rawlevel = intent .getIntExtra (BatteryManager .EXTRA_LEVEL , -1 );
int scale = intent .getIntExtra (BatteryManager .EXTRA_SCALE , -1 );
int level = -1 ;
if (rawlevel >= 0 && scale > 0 ) {
level = (rawlevel * 100 ) / scale ;
}
Log .d ("myLog" , "Battery Level Remaining: " + level + "%" );
Toast .makeText (context , "Battery: " + level + "%" , Toast .LENGTH_SHORT ).show ();
}
}