From 6f8b09029932dfd24945202017639754b00acc2e Mon Sep 17 00:00:00 2001 From: Charles Munger Date: Tue, 12 Nov 2019 08:35:39 -0800 Subject: [PATCH] Deprecate IntentService IntentService always had some issues, such as delivering null, adding latency, inconsistently silently dropping tasks scheduled on its thread local handler, etc. But with android O's background task restrictions, it's really not useful anymore, and there are jetpack APIs that provide its same functionality. Bug: 144042891 Test: No behavior changes Change-Id: I1a91afeeb73e270c54a9ec266b15b5d865ef8339 --- api/current.txt | 12 ++++++------ core/java/android/app/IntentService.java | 15 +++++++-------- core/java/android/app/Service.java | 2 +- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/api/current.txt b/api/current.txt index 5404e1a633bd4..eb87d2cdad2d3 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5115,12 +5115,12 @@ package android.app { method public android.content.Intent getResultData(); } - public abstract class IntentService extends android.app.Service { - ctor public IntentService(String); - method @Nullable public android.os.IBinder onBind(android.content.Intent); - method @WorkerThread protected abstract void onHandleIntent(@Nullable android.content.Intent); - method public void onStart(@Nullable android.content.Intent, int); - method public void setIntentRedelivery(boolean); + @Deprecated public abstract class IntentService extends android.app.Service { + ctor @Deprecated public IntentService(String); + method @Deprecated @Nullable public android.os.IBinder onBind(android.content.Intent); + method @Deprecated @WorkerThread protected abstract void onHandleIntent(@Nullable android.content.Intent); + method @Deprecated public void onStart(@Nullable android.content.Intent, int); + method @Deprecated public void setIntentRedelivery(boolean); } public class KeyguardManager { diff --git a/core/java/android/app/IntentService.java b/core/java/android/app/IntentService.java index 11c747f5db179..74fb99a0909f3 100644 --- a/core/java/android/app/IntentService.java +++ b/core/java/android/app/IntentService.java @@ -44,13 +44,6 @@ import android.os.Message; * long as necessary (and will not block the application's main loop), but * only one request will be processed at a time. * - *

Note: IntentService is subject to all the - * background execution limits - * imposed with Android 8.0 (API level 26). In most cases, you are better off - * using {@link android.support.v4.app.JobIntentService}, which uses jobs - * instead of services when running on Android 8.0 or higher. - *

- * *
*

Developer Guides

*

For a detailed discussion about how to create services, read the @@ -59,8 +52,14 @@ import android.os.Message; *

* * @see android.support.v4.app.JobIntentService - * @see android.os.AsyncTask + * + * @deprecated IntentService is subject to all the + * background execution limits + * imposed with Android 8.0 (API level 26). Consider using {@link androidx.work.WorkManager} + * or {@link androidx.core.app.JobIntentService}, which uses jobs + * instead of services when running on Android 8.0 or higher. */ +@Deprecated public abstract class IntentService extends Service { private volatile Looper mServiceLooper; @UnsupportedAppUsage diff --git a/core/java/android/app/Service.java b/core/java/android/app/Service.java index 1f91b3f431a1f..9b62e3b3af985 100644 --- a/core/java/android/app/Service.java +++ b/core/java/android/app/Service.java @@ -57,7 +57,7 @@ import java.lang.annotation.RetentionPolicy; * networking) operations, it should spawn its own thread in which to do that * work. More information on this can be found in * Processes and - * Threads. The {@link IntentService} class is available + * Threads. The {@link androidx.core.app.JobIntentService} class is available * as a standard implementation of Service that has its own thread where it * schedules its work to be done.

*