diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index c8b61f16979cf..a7f4b287650eb 100755 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -613,6 +613,12 @@ public class PackageManagerService extends IPackageManager.Stub { private final AtomicLong mLastWritten = new AtomicLong(0); private final AtomicBoolean mBackgroundWriteRunning = new AtomicBoolean(false); + private boolean mIsFirstBoot = false; + + boolean isFirstBoot() { + return mIsFirstBoot; + } + void write(boolean force) { if (force) { write(); @@ -701,6 +707,7 @@ public class PackageManagerService extends IPackageManager.Stub { pkg.mLastPackageUsageTimeInMills = timeInMillis; } } catch (FileNotFoundException expected) { + mIsFirstBoot = true; } catch (IOException e) { Log.w(TAG, "Failed to read package usage times", e); } finally { @@ -1745,7 +1752,7 @@ public class PackageManagerService extends IPackageManager.Stub { @Override public boolean isFirstBoot() { - return !mRestoredSettings; + return !mRestoredSettings || mPackageUsage.isFirstBoot(); } @Override