diff options
Diffstat (limited to 'packages/Shell/src')
-rw-r--r-- | packages/Shell/src/com/android/shell/BugreportProgressService.java | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java index 0a68e6791df5..b4d81d6937ed 100644 --- a/packages/Shell/src/com/android/shell/BugreportProgressService.java +++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java @@ -30,7 +30,6 @@ import android.accounts.AccountManager; import android.annotation.MainThread; import android.annotation.Nullable; import android.annotation.SuppressLint; -import android.app.ActivityThread; import android.app.AlertDialog; import android.app.Notification; import android.app.Notification.Action; @@ -117,7 +116,9 @@ import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -174,6 +175,18 @@ public class BugreportProgressService extends Service { static final String EXTRA_EXTRA_ATTACHMENT_URIS = "android.intent.extra.EXTRA_ATTACHMENT_URIS"; + private static final ThreadFactory sBugreportManagerCallbackThreadFactory = + new ThreadFactory() { + private static final ThreadFactory mFactory = Executors.defaultThreadFactory(); + + @Override + public Thread newThread(Runnable r) { + Thread thread = mFactory.newThread(r); + thread.setName("BRMgrCallbackThread"); + return thread; + } + }; + private static final int MSG_SERVICE_COMMAND = 1; private static final int MSG_DELAYED_SCREENSHOT = 2; private static final int MSG_SCREENSHOT_REQUEST = 3; @@ -277,6 +290,7 @@ public class BugreportProgressService extends Service { private boolean mIsWatch; private boolean mIsTv; + private ExecutorService mBugreportSingleThreadExecutor; @Override public void onCreate() { @@ -307,6 +321,8 @@ public class BugreportProgressService extends Service { isTv(this) ? NotificationManager.IMPORTANCE_DEFAULT : NotificationManager.IMPORTANCE_LOW)); mBugreportManager = mContext.getSystemService(BugreportManager.class); + mBugreportSingleThreadExecutor = Executors.newSingleThreadExecutor( + sBugreportManagerCallbackThreadFactory); } @Override @@ -337,6 +353,7 @@ public class BugreportProgressService extends Service { public void onDestroy() { mServiceHandler.getLooper().quit(); mScreenshotHandler.getLooper().quit(); + mBugreportSingleThreadExecutor.close(); super.onDestroy(); } @@ -714,8 +731,6 @@ public class BugreportProgressService extends Service { } } - final Executor executor = ActivityThread.currentActivityThread().getExecutor(); - Log.i(TAG, "bugreport type = " + bugreportType + " bugreport file fd: " + bugreportFd + " screenshot file fd: " + screenshotFd); @@ -724,7 +739,8 @@ public class BugreportProgressService extends Service { try { synchronized (mLock) { mBugreportManager.startBugreport(bugreportFd, screenshotFd, - new BugreportParams(bugreportType), executor, bugreportCallback); + new BugreportParams(bugreportType), mBugreportSingleThreadExecutor, + bugreportCallback); bugreportCallback.trackInfoWithIdLocked(); } } catch (RuntimeException e) { |