diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-12 09:57:05 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-08-12 09:57:05 -0700 |
commit | 444874049075a6f1a921555083881071a02fc955 (patch) | |
tree | 9b12566a2c886b40d4dab61683cb5403d02f257e | |
parent | 62b83b7fc4642b71829737494258f12996bc1baa (diff) | |
parent | 07a500f0de2243b832e258ed477652a10cbd2d08 (diff) | |
download | frameworks_base-444874049075a6f1a921555083881071a02fc955.zip frameworks_base-444874049075a6f1a921555083881071a02fc955.tar.gz frameworks_base-444874049075a6f1a921555083881071a02fc955.tar.bz2 |
Merge change 20930
* changes:
BatteryService: Fix problems shutting down when the battery is dead:
-rw-r--r-- | services/java/com/android/server/BatteryService.java | 25 | ||||
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 4 |
2 files changed, 21 insertions, 8 deletions
diff --git a/services/java/com/android/server/BatteryService.java b/services/java/com/android/server/BatteryService.java index 45c1e5c..26fee89 100644 --- a/services/java/com/android/server/BatteryService.java +++ b/services/java/com/android/server/BatteryService.java @@ -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,11 +198,8 @@ 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) { mPlugType = BatteryManager.BATTERY_PLUGGED_AC; diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index c30386e..8919ccc 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -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(); |