OSDN Git Service

Replace BroadcastReceiver.goAsync() with IntentService
authorHung-ying Tyan <tyanh@google.com>
Wed, 27 Jun 2012 10:25:47 +0000 (18:25 +0800)
committerHung-ying Tyan <tyanh@google.com>
Wed, 27 Jun 2012 10:26:45 +0000 (18:26 +0800)
to make Gallery run on older API.

Change-Id: I30dacb38eb4e70ed3f89135544d6c514d0379add

AndroidManifest.xml
src/com/android/gallery3d/app/PackagesMonitor.java

index 2a69ce1..5fc5015 100644 (file)
                 <data android:scheme="package"/>
             </intent-filter>
         </receiver>
+        <service android:name="com.android.gallery3d.app.PackagesMonitor$AsyncService"/>
         <receiver android:name="com.android.camera.CameraButtonIntentReceiver">
             <intent-filter>
                 <action android:name="android.intent.action.CAMERA_BUTTON"/>
index e4bb8ee..c849df6 100644 (file)
@@ -16,6 +16,7 @@
 
 package com.android.gallery3d.app;
 
+import android.app.IntentService;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -34,23 +35,22 @@ public class PackagesMonitor extends BroadcastReceiver {
 
     @Override
     public void onReceive(final Context context, final Intent intent) {
-        final PendingResult result = goAsync();
-        new Thread("GalleryPackagesMonitorAsync") {
-            @Override
-            public void run() {
-                try {
-                    onReceiveAsync(context, intent);
-                } catch (Throwable t) {
-                    Log.e("PackagesMonitor", "onReceiveAsync", t);
-                } finally {
-                    result.finish();
-                }
-            }
-        }.start();
+        context.startService(new Intent(context, AsyncService.class));
+    }
+
+    public static class AsyncService extends IntentService {
+        public AsyncService() {
+            super("GalleryPackagesMonitorAsync");
+        }
+
+        @Override
+        protected void onHandleIntent(Intent intent) {
+            onReceiveAsync(this, intent);
+        }
     }
 
     // Runs in a background thread.
-    private void onReceiveAsync(Context context, Intent intent) {
+    private static void onReceiveAsync(Context context, Intent intent) {
         SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
 
         int version = prefs.getInt(KEY_PACKAGES_VERSION, 1);