Skip to content

Instantly share code, notes, and snippets.

@malikkurosaki
Created October 16, 2019 12:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save malikkurosaki/ce9a4df4206056f8f371598f3460b1ed to your computer and use it in GitHub Desktop.
Save malikkurosaki/ce9a4df4206056f8f371598f3460b1ed to your computer and use it in GitHub Desktop.
android studio service tidak pernah mati

never ending service android

buat service

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;
    }
}

batre reciever

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();
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment