aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordaneren2005 <daneren2005@gmail.com>2013-08-22 09:24:29 -0700
committerdaneren2005 <daneren2005@gmail.com>2013-08-22 09:24:29 -0700
commit4afb4b8cd6ac2d7ed6bff5ccc3aa1972cb4e143c (patch)
treef5d0fb9634f504bd4c8325013f83d78503cb0cbd /src
parent2efcba0e7cc1c7216db2d2cf8fc5a363f75e4810 (diff)
downloaddsub-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.java19
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);