From 13b0241248716b126a538457828a964e86109d58 Mon Sep 17 00:00:00 2001 From: Matthew Williams Date: Fri, 6 Jun 2014 19:05:44 -0700 Subject: [PATCH] Add test app for JobScheduler Schedule either a delay/deadline task, or a task with connectivity constraints Change-Id: Ie7ea731d0f6673b680cef79f894cb609a61b795d --- .../server/task/TaskManagerService.java | 2 +- .../server/task/TaskServiceContext.java | 6 +- tests/JobSchedulerTestApp/Android.mk | 15 ++ tests/JobSchedulerTestApp/AndroidManifest.xml | 31 ++++ .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 5473 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 3298 bytes .../res/drawable-xhdpi/ic_action_refresh.png | Bin 0 -> 856 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 7401 bytes .../res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 12074 bytes .../res/layout/activity_main.xml | 125 +++++++++++++ .../res/values-v11/styles.xml | 28 +++ .../res/values-v14/styles.xml | 29 +++ .../JobSchedulerTestApp/res/values/color.xml | 21 +++ .../res/values/strings.xml | 33 ++++ .../JobSchedulerTestApp/res/values/styles.xml | 37 ++++ .../demo/jobSchedulerApp/MainActivity.java | 169 ++++++++++++++++++ .../service/TestJobService.java | 127 +++++++++++++ 17 files changed, 618 insertions(+), 5 deletions(-) create mode 100644 tests/JobSchedulerTestApp/Android.mk create mode 100644 tests/JobSchedulerTestApp/AndroidManifest.xml create mode 100644 tests/JobSchedulerTestApp/res/drawable-hdpi/ic_launcher.png create mode 100644 tests/JobSchedulerTestApp/res/drawable-mdpi/ic_launcher.png create mode 100644 tests/JobSchedulerTestApp/res/drawable-xhdpi/ic_action_refresh.png create mode 100644 tests/JobSchedulerTestApp/res/drawable-xhdpi/ic_launcher.png create mode 100644 tests/JobSchedulerTestApp/res/drawable-xxhdpi/ic_launcher.png create mode 100644 tests/JobSchedulerTestApp/res/layout/activity_main.xml create mode 100644 tests/JobSchedulerTestApp/res/values-v11/styles.xml create mode 100644 tests/JobSchedulerTestApp/res/values-v14/styles.xml create mode 100644 tests/JobSchedulerTestApp/res/values/color.xml create mode 100644 tests/JobSchedulerTestApp/res/values/strings.xml create mode 100644 tests/JobSchedulerTestApp/res/values/styles.xml create mode 100644 tests/JobSchedulerTestApp/src/com/android/demo/jobSchedulerApp/MainActivity.java create mode 100644 tests/JobSchedulerTestApp/src/com/android/demo/jobSchedulerApp/service/TestJobService.java diff --git a/services/core/java/com/android/server/task/TaskManagerService.java b/services/core/java/com/android/server/task/TaskManagerService.java index a5f865fd95f58..27af0ed7c9193 100644 --- a/services/core/java/com/android/server/task/TaskManagerService.java +++ b/services/core/java/com/android/server/task/TaskManagerService.java @@ -374,7 +374,7 @@ public class TaskManagerService extends com.android.server.SystemService public void onTaskCompleted(TaskStatus taskStatus, boolean needsReschedule) { if (!stopTrackingTask(taskStatus)) { if (DEBUG) { - Slog.e(TAG, "Error removing task: could not find task to remove. Was task" + + Slog.e(TAG, "Error removing task: could not find task to remove. Was task " + "removed while executing?"); } return; diff --git a/services/core/java/com/android/server/task/TaskServiceContext.java b/services/core/java/com/android/server/task/TaskServiceContext.java index 75e92127475de..686ca38e064fb 100644 --- a/services/core/java/com/android/server/task/TaskServiceContext.java +++ b/services/core/java/com/android/server/task/TaskServiceContext.java @@ -466,16 +466,14 @@ public class TaskServiceContext extends ITaskCallback.Stub implements ServiceCon removeMessages(MSG_TIMEOUT); mWakeLock.release(); mContext.unbindService(TaskServiceContext.this); - mWakeLock = null; + mCompletedListener.onTaskCompleted(mRunningTask, reschedule); + mWakeLock = null; mRunningTask = null; mParams = null; mVerb = -1; mCancelled.set(false); - service = null; - - mCompletedListener.onTaskCompleted(mRunningTask, reschedule); synchronized (mAvailableLock) { mAvailable = true; } diff --git a/tests/JobSchedulerTestApp/Android.mk b/tests/JobSchedulerTestApp/Android.mk new file mode 100644 index 0000000000000..7336d8c6a00da --- /dev/null +++ b/tests/JobSchedulerTestApp/Android.mk @@ -0,0 +1,15 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := optional + +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res + +LOCAL_PACKAGE_NAME := JobSchedulerTestApp + +LOCAL_PROGUARD_ENABLED := disabled + +include $(BUILD_PACKAGE) + diff --git a/tests/JobSchedulerTestApp/AndroidManifest.xml b/tests/JobSchedulerTestApp/AndroidManifest.xml new file mode 100644 index 0000000000000..74317377d31f6 --- /dev/null +++ b/tests/JobSchedulerTestApp/AndroidManifest.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/JobSchedulerTestApp/res/drawable-hdpi/ic_launcher.png b/tests/JobSchedulerTestApp/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f7005a31c13908354e2bc7d029598e71f61967 GIT binary patch literal 5473 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

ESi38w3I3R+OLb_4jMDI6ur*(EbfEyQ@poA^% zj<3H=--QW}TJh%-zL)9Ek(=0Or|v%Q-)f`Rbs~o56PPedR*Wrjxq4%I5<-S(!oip@ zHjMFcUv&NLsJCW}@fehRe?99MAqARb&_;H!66yJAd_ zQ+wp?C1!tH^g-Z$&q4dahYiH0M}kBt#~eXW`O%l5t*s5(+uKD@4Ykc|C4CDz+B=^Z ztj>;3dLKG&S`ma<na6A^yu^3LtJ;F%-ww!hN>7?WwYa z^Y7njgL8Z8s80gJpll{6OfjZXFj<^x2B$GNN0_gv;Gw@CzU#Ls7h}L!p2pv^U@`l{ ztG)g_WXXpSWo`qLNUo?RbOP_xey3t+Y;1(4rY5+1>mDS0T}XEn1He0shEE4l947Hd2HDK`=aqpVgjgfTGxI?3!{mJ847NXqpWhhVWpFIWYc%1=Sp4syP7e z`pK}gUwA3{jxjum!mQTt6}7+oXRp_+7WN4)a2>dp-I-+YVroKXV&~>UeSJOLzEKYe zwr9y{NJz<9%%CTd~BF({RIFy1^E^a*|Y<{uvE=qvin z`~FPYOZo31;`>*#_q&xMC zZeH_oJl#mYY z!29yb)10jy>G24&Kl68P^lSg|`n=EHS#oem-|(BOK8nGb00OXeEI8->dni!O_EO+d z!(+ndc&-!(_Jw_7-=DqXkcwmBn9M%pedw+CoHo2;_-Br9GV9Mf{iXh2tbJy^=bE#$ zZ)p9>k9Go@08Id=W*m%I5U#^MX1(W}qyHysAMBeSqd!09%g>u?bfq2cmiscZq`z{| z)0^?m@B287{p;-LFW+5tY~DY8OP2Ntt6R}`TccCI?d`0Ffa8Zzoh$l9wJhxyaR)!c zbMV~J>>9il`{4Vs~tfBlr XFLxAlvx~Pq00000NkvXXu0mjfwd8C_ literal 0 HcmV?d00001 diff --git a/tests/JobSchedulerTestApp/res/drawable-mdpi/ic_launcher.png b/tests/JobSchedulerTestApp/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a085462c25426a418983f122e443028c919b1cbb GIT binary patch literal 3298 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 literal 0 HcmV?d00001 diff --git a/tests/JobSchedulerTestApp/res/drawable-xhdpi/ic_action_refresh.png b/tests/JobSchedulerTestApp/res/drawable-xhdpi/ic_action_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5d2558fb4aa54734d28710db340662539af976 GIT binary patch literal 856 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 literal 0 HcmV?d00001 diff --git a/tests/JobSchedulerTestApp/res/drawable-xxhdpi/ic_launcher.png b/tests/JobSchedulerTestApp/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b198ee3e9fffc4946787f49c2859ee5fa0fb45b5 GIT binary patch literal 12074 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 U`17G + + + + + + + + +