I am using this code to detect when the screen gets locked and call a toast, it works every time the screen gets locked. However, whenever i go out of the app, it stops working. it only works if the app is open.
public class BatterySaverLiteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
Log.i("Check", "Screen went OFF");
Toast.makeText(context, "screen OFF", Toast.LENGTH_LONG).show();
task(context);
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
Log.i("Check", "Screen went ON");
Toast.makeText(context, "screen ON", Toast.LENGTH_LONG).show();
}
}
private void task(Context context) {
// Process Killer and display all package names in toast
ActivityManager actvityManager = (ActivityManager) context
.getApplicationContext().getSystemService(
context.getApplicationContext().ACTIVITY_SERVICE);
List<RunningAppProcessInfo> procInfos = actvityManager
.getRunningAppProcesses();
for (int pnum = 0; pnum < procInfos.size(); pnum++) {
actvityManager
.killBackgroundProcesses(procInfos.get(pnum).processName);
}
}
}
thats how im registering my receiver
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
mReceiver = new BatterySaverLiteReceiver();
registerReceiver(mReceiver, filter);
manifest
<receiver android:name=".BatterySaverUltraReceiver" >
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="android.intent.action.SCREEN_ON" />
</intent-filter>
</receiver>
i got this code from here
I think you are killing all the processes including your process in task()
method. Filter out your background service's process from killBackgroundProcesses()
.
Get the process name from RunningAppProcessInfo
and compare it with your apps's process name. By default, process name will be equal to package name.
private void task(Context context) {
ActivityManager actvityManager = (ActivityManager) context
.getApplicationContext().getSystemService(
context.getApplicationContext().ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> procInfos = actvityManager
.getRunningAppProcesses();
for (int pnum = 0; pnum < procInfos.size(); pnum++) {
ActivityManager.RunningAppProcessInfo info = procInfos.get(pnum);
if (info.pid != android.os.Process.myPid()) {
actvityManager.killBackgroundProcesses(info.processName);
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With