Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44487404 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 20930

* changes:
  BatteryService: Fix problems shutting down when the battery is dead:
parents 62b83b7f 07a500f0
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -44,8 +44,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

import com.android.internal.app.ShutdownThread;


/**
 * <p>BatteryService monitors the charging status, and charge level of the device
@@ -176,6 +174,22 @@ class BatteryService extends Binder {
        return mBatteryLevel;
    }

    void systemReady() {
        // check our power situation now that it is safe to display the shutdown dialog.
        shutdownIfNoPower();
    }

    private final void shutdownIfNoPower() {
        // shut down gracefully if our battery is critically low and we are not powered.
        // wait until the system has booted before attempting to display the shutdown dialog.
        if (mBatteryLevel == 0 && !isPowered() && ActivityManagerNative.isSystemReady()) {
            Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
            intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            mContext.startActivity(intent);
        }
    }

    private native void native_update();

    private synchronized final void update() {
@@ -184,10 +198,7 @@ class BatteryService extends Binder {
        boolean logOutlier = false;
        long dischargeDuration = 0;

        // shut down gracefully if our battery is critically low and we are not powered
        if (mBatteryLevel == 0 && isPowered(0xffffffff)) {
            ShutdownThread.shutdown(mContext, false);
        }
        shutdownIfNoPower();

        mBatteryLevelCritical = mBatteryLevel <= CRITICAL_BATTERY_LEVEL;
        if (mAcOnline) {
+3 −1
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ class ServerThread extends Thread {

        HardwareService hardware = null;
        PowerManagerService power = null;
        BatteryService battery = null;
        IPackageManager pm = null;
        Context context = null;
        WindowManagerService wm = null;
@@ -132,7 +133,7 @@ class ServerThread extends Thread {
            ActivityManagerService.installSystemProviders();

            Log.i(TAG, "Starting Battery Service.");
            BatteryService battery = new BatteryService(context);
            battery = new BatteryService(context);
            ServiceManager.addService("battery", battery);

            Log.i(TAG, "Starting Hardware Service.");
@@ -380,6 +381,7 @@ class ServerThread extends Thread {
        } catch (RemoteException e) {
        }

        battery.systemReady();
        Watchdog.getInstance().start();

        Looper.loop();