diff options
author | daneren2005 <daneren2005@gmail.com> | 2013-08-22 09:24:29 -0700 |
---|---|---|
committer | daneren2005 <daneren2005@gmail.com> | 2013-08-22 09:24:29 -0700 |
commit | 4afb4b8cd6ac2d7ed6bff5ccc3aa1972cb4e143c (patch) | |
tree | f5d0fb9634f504bd4c8325013f83d78503cb0cbd /src | |
parent | 2efcba0e7cc1c7216db2d2cf8fc5a363f75e4810 (diff) | |
download | dsub-4afb4b8cd6ac2d7ed6bff5ccc3aa1972cb4e143c.tar.gz dsub-4afb4b8cd6ac2d7ed6bff5ccc3aa1972cb4e143c.tar.bz2 dsub-4afb4b8cd6ac2d7ed6bff5ccc3aa1972cb4e143c.zip |
Move to eventHandler instead of creating a new thread every time
Diffstat (limited to 'src')
-rw-r--r-- | src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java b/src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java index 021f88d2..3a2617f3 100644 --- a/src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java +++ b/src/github/daneren2005/dsub/service/DownloadServiceLifecycleSupport.java @@ -34,6 +34,8 @@ import android.content.IntentFilter; import android.media.RemoteControlClient; import android.os.AsyncTask; import android.os.Build; +import android.os.Handler; +import android.os.Looper; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; @@ -53,6 +55,8 @@ public class DownloadServiceLifecycleSupport { private static final String FILENAME_DOWNLOADS_SER = "downloadstate.ser"; private final DownloadServiceImpl downloadService; + private Looper eventLooper; + private Handler eventHandler; private ScheduledExecutorService executorService; private BroadcastReceiver headsetEventReceiver; private BroadcastReceiver ejectEventReceiver; @@ -106,6 +110,16 @@ public class DownloadServiceLifecycleSupport { executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleWithFixedDelay(downloadChecker, 5, 5, TimeUnit.SECONDS); + + @Override + new Thread(new Runnable() { + public void run() { + Looper.prepare(); + eventLooper = Looper.myLooper(); + eventHandler = new Handler(mediaPlayerLooper); + Looper.loop(); + } + }).start(); // Pause when headset is unplugged. headsetEventReceiver = new BroadcastReceiver() { @@ -166,7 +180,7 @@ public class DownloadServiceLifecycleSupport { if (intent != null && intent.getExtras() != null) { final KeyEvent event = (KeyEvent) intent.getExtras().get(Intent.EXTRA_KEY_EVENT); if (event != null) { - new Thread(new Runnable(){ + eventHandler.post(new Runnable() { @Override public void run() { if(!setup.get()) { @@ -176,13 +190,14 @@ public class DownloadServiceLifecycleSupport { } handleKeyEvent(event); } - }).start(); + }); } } } public void onDestroy() { executorService.shutdown(); + eventLooper.quit(); serializeDownloadQueueNow(); downloadService.clear(false); downloadService.unregisterReceiver(ejectEventReceiver); |