diff options
author | Dianne Hackborn <hackbod@google.com> | 2010-09-30 18:27:22 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2010-09-30 18:27:22 -0700 |
commit | cef65eeb0315c3118bf8860d6f723cb49ff6bc52 (patch) | |
tree | 2917e5a149a267eac00b13a27a88627e252cfe23 /services/java/com/android/server/am | |
parent | 727d67d4fb8721b0291312e4cca33927dfba0e31 (diff) | |
download | frameworks_base-cef65eeb0315c3118bf8860d6f723cb49ff6bc52.zip frameworks_base-cef65eeb0315c3118bf8860d6f723cb49ff6bc52.tar.gz frameworks_base-cef65eeb0315c3118bf8860d6f723cb49ff6bc52.tar.bz2 |
Rub in a little 'ol log-b-gone.
Mmmmmm... great fresh scent!
Change-Id: I050e70b31b5d4a9c6731f15a4b51a3620a33a78d
Diffstat (limited to 'services/java/com/android/server/am')
4 files changed, 114 insertions, 20 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 34753e7..50054bd 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -112,9 +112,15 @@ import android.view.View; import android.view.WindowManager; import android.view.WindowManagerPolicy; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.DataInputStream; +import java.io.DataOutputStream; import java.io.File; import java.io.FileDescriptor; +import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; @@ -6087,6 +6093,76 @@ public final class ActivityManagerService extends ActivityManagerNative return mSystemReady; } + private static File getCalledPreBootReceiversFile() { + File dataDir = Environment.getDataDirectory(); + File systemDir = new File(dataDir, "system"); + File fname = new File(systemDir, "called_pre_boots.dat"); + return fname; + } + + private static ArrayList<ComponentName> readLastDonePreBootReceivers() { + ArrayList<ComponentName> lastDoneReceivers = new ArrayList<ComponentName>(); + File file = getCalledPreBootReceiversFile(); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + DataInputStream dis = new DataInputStream(new BufferedInputStream(fis, 2048)); + int vers = dis.readInt(); + String codename = dis.readUTF(); + if (vers == android.os.Build.VERSION.SDK_INT + && codename.equals(android.os.Build.VERSION.CODENAME)) { + int num = dis.readInt(); + while (num > 0) { + num--; + String pkg = dis.readUTF(); + String cls = dis.readUTF(); + lastDoneReceivers.add(new ComponentName(pkg, cls)); + } + } + } catch (FileNotFoundException e) { + } catch (IOException e) { + Slog.w(TAG, "Failure reading last done pre-boot receivers", e); + } finally { + if (fis != null) { + try { + fis.close(); + } catch (IOException e) { + } + } + } + return lastDoneReceivers; + } + + private static void writeLastDonePreBootReceivers(ArrayList<ComponentName> list) { + File file = getCalledPreBootReceiversFile(); + FileOutputStream fos = null; + DataOutputStream dos = null; + try { + Slog.i(TAG, "Writing new set of last done pre-boot receivers..."); + fos = new FileOutputStream(file); + dos = new DataOutputStream(new BufferedOutputStream(fos, 2048)); + dos.writeInt(android.os.Build.VERSION.SDK_INT); + dos.writeUTF(android.os.Build.VERSION.CODENAME); + dos.writeInt(list.size()); + for (int i=0; i<list.size(); i++) { + dos.writeUTF(list.get(i).getPackageName()); + dos.writeUTF(list.get(i).getClassName()); + } + } catch (IOException e) { + Slog.w(TAG, "Failure writing last done pre-boot receivers", e); + file.delete(); + } finally { + if (dos != null) { + try { + dos.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + } + public void systemReady(final Runnable goingCallback) { // In the simulator, startRunning will never have been called, which // normally sets a few crucial variables. Do it here instead. @@ -6121,9 +6197,24 @@ public final class ActivityManagerService extends ActivityManagerNative } } intent.addFlags(Intent.FLAG_RECEIVER_BOOT_UPGRADE); + + ArrayList<ComponentName> lastDoneReceivers = readLastDonePreBootReceivers(); + + final ArrayList<ComponentName> doneReceivers = new ArrayList<ComponentName>(); for (int i=0; i<ris.size(); i++) { ActivityInfo ai = ris.get(i).activityInfo; - intent.setComponent(new ComponentName(ai.packageName, ai.name)); + ComponentName comp = new ComponentName(ai.packageName, ai.name); + if (lastDoneReceivers.contains(comp)) { + ris.remove(i); + i--; + } + } + + for (int i=0; i<ris.size(); i++) { + ActivityInfo ai = ris.get(i).activityInfo; + ComponentName comp = new ComponentName(ai.packageName, ai.name); + doneReceivers.add(comp); + intent.setComponent(comp); IIntentReceiver finisher = null; if (i == ris.size()-1) { finisher = new IIntentReceiver.Stub() { @@ -6138,6 +6229,7 @@ public final class ActivityManagerService extends ActivityManagerNative synchronized (ActivityManagerService.this) { mDidUpdate = true; } + writeLastDonePreBootReceivers(doneReceivers); systemReady(goingCallback); } }); @@ -6177,19 +6269,19 @@ public final class ActivityManagerService extends ActivityManagerNative } } - if (procsToKill != null) { - synchronized(this) { + synchronized(this) { + if (procsToKill != null) { for (int i=procsToKill.size()-1; i>=0; i--) { ProcessRecord proc = procsToKill.get(i); Slog.i(TAG, "Removing system update proc: " + proc); removeProcessLocked(proc, true); } - - // Now that we have cleaned up any update processes, we - // are ready to start launching real processes and know that - // we won't trample on them any more. - mProcessesReady = true; } + + // Now that we have cleaned up any update processes, we + // are ready to start launching real processes and know that + // we won't trample on them any more. + mProcessesReady = true; } Slog.i(TAG, "System now ready"); @@ -7602,7 +7694,7 @@ public final class ActivityManagerService extends ActivityManagerNative pw.println(" "); pw.println("Receiver Resolver Table:"); - mReceiverResolver.dump(pw, null, " ", null); + mReceiverResolver.dump(pw, null, " ", null, false); needSep = true; } diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java index 9358469..53b08d0 100644 --- a/services/java/com/android/server/am/ActivityRecord.java +++ b/services/java/com/android/server/am/ActivityRecord.java @@ -439,10 +439,11 @@ class ActivityRecord extends IApplicationToken.Stub { sb.append(shortComponentName); sb.append(": "); TimeUtils.formatDuration(thisTime, sb); - sb.append(" (total "); - TimeUtils.formatDuration(totalTime, sb); - sb.append(totalTime); - sb.append(")"); + if (thisTime != totalTime) { + sb.append(" (total "); + TimeUtils.formatDuration(totalTime, sb); + sb.append(")"); + } Log.i(ActivityManagerService.TAG, sb.toString()); } stack.reportActivityLaunchedLocked(false, this, thisTime, totalTime); diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index a4497d6..30395c0 100644 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -1881,7 +1881,7 @@ public class ActivityStack { String resultWho, int requestCode, int callingPid, int callingUid, boolean onlyIfNeeded, boolean componentSpecified) { - Slog.i(TAG, "Starting activity: " + intent); + Slog.i(TAG, "Starting: " + intent); ActivityRecord sourceRecord = null; ActivityRecord resultRecord = null; diff --git a/services/java/com/android/server/am/UsageStatsService.java b/services/java/com/android/server/am/UsageStatsService.java index 3f15d0a..8463b5a 100644 --- a/services/java/com/android/server/am/UsageStatsService.java +++ b/services/java/com/android/server/am/UsageStatsService.java @@ -57,6 +57,7 @@ import java.util.concurrent.atomic.AtomicLong; public final class UsageStatsService extends IUsageStats.Stub { public static final String SERVICE_NAME = "usagestats"; private static final boolean localLOGV = false; + private static final boolean REPORT_UNEXPECTED = false; private static final String TAG = "UsageStats"; // Current on-disk Parcel version @@ -404,11 +405,11 @@ public final class UsageStatsService extends IUsageStats.Stub { new Thread("UsageStatsService_DiskWriter") { public void run() { try { - Slog.d(TAG, "Disk writer thread starting."); + if (localLOGV) Slog.d(TAG, "Disk writer thread starting."); writeStatsToFile(true); } finally { mUnforcedDiskWriteRunning.set(false); - Slog.d(TAG, "Disk writer thread ending."); + if (localLOGV) Slog.d(TAG, "Disk writer thread ending."); } } }.start(); @@ -458,7 +459,7 @@ public final class UsageStatsService extends IUsageStats.Stub { } } } - Slog.d(TAG, "Dumped usage stats."); + if (localLOGV) Slog.d(TAG, "Dumped usage stats."); } private void writeStatsFLOCK(File file) throws IOException { @@ -493,7 +494,7 @@ public final class UsageStatsService extends IUsageStats.Stub { } public void shutdown() { - Slog.w(TAG, "Writing usage stats before shutdown..."); + Slog.i(TAG, "Writing usage stats before shutdown..."); writeStatsToFile(true); } @@ -520,7 +521,7 @@ public final class UsageStatsService extends IUsageStats.Stub { if (mLastResumedPkg != null) { // We last resumed some other package... just pause it now // to recover. - Slog.i(TAG, "Unexpected resume of " + pkgName + if (REPORT_UNEXPECTED) Slog.i(TAG, "Unexpected resume of " + pkgName + " while already resumed in " + mLastResumedPkg); PkgUsageStatsExtended pus = mStats.get(mLastResumedPkg); if (pus != null) { @@ -559,7 +560,7 @@ public final class UsageStatsService extends IUsageStats.Stub { return; } if (!mIsResumed) { - Slog.i(TAG, "Something wrong here, didn't expect " + if (REPORT_UNEXPECTED) Slog.i(TAG, "Something wrong here, didn't expect " + pkgName + " to be paused"); return; } |