diff options
| -rw-r--r-- | services/core/java/com/android/server/accounts/AccountManagerService.java | 49 |
1 files changed, 16 insertions, 33 deletions
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 3c418945d74d..06ea0daf49de 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -85,7 +85,6 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; -import android.service.notification.StatusBarNotification; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -99,8 +98,8 @@ import com.android.internal.content.PackageMonitor; import com.android.internal.util.ArrayUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.Preconditions; -import com.android.server.FgThread; import com.android.server.LocalServices; +import com.android.server.ServiceThread; import com.android.server.SystemService; import com.google.android.collect.Lists; @@ -181,14 +180,7 @@ public class AccountManagerService private final AppOpsManager mAppOpsManager; private UserManager mUserManager; - private final MessageHandler mMessageHandler; - - /** - * Used to keep data read/write operations for logging purposes in a separate thread - * from main thread - */ - private final LinkedList<Runnable> mLogRecordRunnables = new LinkedList<Runnable>(); - private Thread mLogRecordThread; + private final MessageHandler mHandler; // Messages that can be sent on mHandler private static final int MESSAGE_TIMED_OUT = 3; @@ -369,7 +361,10 @@ public class AccountManagerService mPackageManager = packageManager; mAppOpsManager = mContext.getSystemService(AppOpsManager.class); - mMessageHandler = new MessageHandler(FgThread.get().getLooper()); + ServiceThread serviceThread = new ServiceThread(TAG, + android.os.Process.THREAD_PRIORITY_FOREGROUND, true /* allowIo */); + serviceThread.start(); + mHandler = new MessageHandler(serviceThread.getLooper()); mAuthenticatorCache = authenticatorCache; mAuthenticatorCache.setListener(this, null /* Handler */); @@ -396,7 +391,7 @@ public class AccountManagerService * and then rebuild the cache. All under the cache lock. But that change is too * large at this point. */ - Runnable r = new Runnable() { + Runnable purgingRunnable = new Runnable() { @Override public void run() { purgeOldGrantsAll(); @@ -416,7 +411,7 @@ public class AccountManagerService uidOfUninstalledApplication))); } }; - new Thread(r).start(); + mHandler.post(purgingRunnable); } } @@ -429,7 +424,7 @@ public class AccountManagerService mContext.registerReceiverAsUser(new BroadcastReceiver() { @Override public void onReceive(Context context1, Intent intent) { - mMessageHandler.post(new Runnable() { + mHandler.post(new Runnable() { @Override public void run() { int uidOfInstalledApplication = @@ -472,7 +467,7 @@ public class AccountManagerService // Called on a handler, and running as the system cancelAccountAccessRequestNotificationIfNeeded(uid, true); } - }.register(mContext, mMessageHandler.getLooper(), UserHandle.ALL, true); + }.register(mContext, mHandler.getLooper(), UserHandle.ALL, true); // Cancel account request notification if an app op was preventing the account access mAppOpsManager.startWatchingMode(AppOpsManager.OP_GET_ACCOUNTS, null, @@ -1865,7 +1860,7 @@ public class AccountManagerService if (user.isRestricted() && (parentUserId == user.restrictedProfileParentId)) { addSharedAccountAsUser(account, user.id); if (isLocalUnlockedUser(user.id)) { - mMessageHandler.sendMessage(mMessageHandler.obtainMessage( + mHandler.sendMessage(mHandler.obtainMessage( MESSAGE_COPY_SHARED_ACCOUNT, parentUserId, user.id, account)); } } @@ -2330,7 +2325,7 @@ public class AccountManagerService if (account.equals(key.first.first) && AccountManager.ACCOUNT_ACCESS_TOKEN.equals(key.first.second)) { final int uid = (Integer) key.second; - mMessageHandler.post(() -> cancelAccountAccessRequestNotificationIfNeeded( + mHandler.post(() -> cancelAccountAccessRequestNotificationIfNeeded( account, uid, false)); } } @@ -4594,7 +4589,7 @@ public class AccountManagerService } public void cancelTimeout() { - mMessageHandler.removeMessages(MESSAGE_TIMED_OUT, this); + mHandler.removeMessages(MESSAGE_TIMED_OUT, this); } @Override @@ -4984,23 +4979,11 @@ public class AccountManagerService } } - mLogRecordRunnables.add(new LogRecordTask(action, tableName, accountId, userAccount, - callingUid, userAccount.debugDbInsertionPoint)); + LogRecordTask logTask = new LogRecordTask(action, tableName, accountId, userAccount, + callingUid, userAccount.debugDbInsertionPoint); userAccount.debugDbInsertionPoint = (userAccount.debugDbInsertionPoint + 1) % MAX_DEBUG_DB_SIZE; - - - if(mLogRecordThread == null || !mLogRecordThread.isAlive()) { - mLogRecordThread = new Thread(new Runnable() { - public void run() { - while(mLogRecordRunnables.size() > 0) { - mLogRecordRunnables.pollFirst().run(); - } - } - }); - mLogRecordThread.start(); - } - + mHandler.post(logTask); } /* |
