Only use single UpdateThread.
Jeff Sharkey [Wed, 20 Feb 2013 23:54:26 +0000 (15:54 -0800)]
Since DownloadService starts and stops frequently, recycle a single
UpdateThread across invocations.

Bug: 8233041
Change-Id: I07756fb6bfdbad811cbd58e628fdfdbf63d71bf8

src/com/android/providers/downloads/DownloadService.java

index 66d3be9..20cf629 100644 (file)
@@ -158,9 +158,11 @@ public class DownloadService extends Service {
         mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
         mStorageManager = new StorageManager(this);
 
-        mUpdateThread = new HandlerThread(TAG + "-UpdateThread");
-        mUpdateThread.start();
-        mUpdateHandler = new Handler(mUpdateThread.getLooper(), mUpdateCallback);
+        if (mUpdateThread == null) {
+            mUpdateThread = new HandlerThread(TAG + "-UpdateThread");
+            mUpdateThread.start();
+            mUpdateHandler = new Handler(mUpdateThread.getLooper(), mUpdateCallback);
+        }
 
         mScanner = new DownloadScanner(this);
 
@@ -185,7 +187,6 @@ public class DownloadService extends Service {
 
     @Override
     public void onDestroy() {
-        mUpdateThread.quit();
         mScanner.shutdown();
         getContentResolver().unregisterContentObserver(mObserver);
         if (Constants.LOGVV) {