13ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla/* 23ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * Copyright (C) 2017 The Android Open Source Project 33ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * 43ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * Licensed under the Apache License, Version 2.0 (the "License"); 53ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * you may not use this file except in compliance with the License. 63ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * You may obtain a copy of the License at 73ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * 83ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * http://www.apache.org/licenses/LICENSE-2.0 93ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * 103ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * Unless required by applicable law or agreed to in writing, software 113ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * distributed under the License is distributed on an "AS IS" BASIS, 123ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * See the License for the specific language governing permissions and 143ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla * limitations under the License. 153ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla */ 163ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla 173ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklapackage com.android.servicestests.apps.jobtestapp; 183ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla 193ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklaimport android.app.Activity; 203ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklaimport android.app.job.JobInfo; 213ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklaimport android.app.job.JobScheduler; 223ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklaimport android.content.ComponentName; 233ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklaimport android.content.Context; 243ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklaimport android.content.Intent; 253ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklaimport android.os.Bundle; 263ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklaimport android.util.Log; 273ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla 283ac1daac4044c70ad4ee673214074306de499a18Suprabh Shuklapublic class TestJobActivity extends Activity { 293ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla private static final String TAG = TestJobActivity.class.getSimpleName(); 30106203bc539589d1063d70737c7d0f399100ae94Suprabh Shukla private static final String PACKAGE_NAME = "com.android.servicestests.apps.jobtestapp"; 31106203bc539589d1063d70737c7d0f399100ae94Suprabh Shukla 32106203bc539589d1063d70737c7d0f399100ae94Suprabh Shukla public static final String EXTRA_JOB_ID_KEY = PACKAGE_NAME + ".extra.JOB_ID"; 33106203bc539589d1063d70737c7d0f399100ae94Suprabh Shukla public static final String ACTION_START_JOB = PACKAGE_NAME + ".action.START_JOB"; 34106203bc539589d1063d70737c7d0f399100ae94Suprabh Shukla public static final String ACTION_CANCEL_JOBS = PACKAGE_NAME + ".action.CANCEL_JOBS"; 353ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla public static final int JOB_INITIAL_BACKOFF = 10_000; 363ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla public static final int JOB_MINIMUM_LATENCY = 5_000; 373ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla 383ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla @Override 393ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla public void onCreate(Bundle savedInstanceState) { 403ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla super.onCreate(savedInstanceState); 413ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla ComponentName jobServiceComponent = new ComponentName(this, TestJobService.class); 423ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); 433ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla final Intent intent = getIntent(); 443ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla switch (intent.getAction()) { 453ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla case ACTION_CANCEL_JOBS: 463ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla jobScheduler.cancelAll(); 473ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla Log.d(TAG, "Cancelled all jobs for " + getPackageName()); 483ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla break; 493ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla case ACTION_START_JOB: 503ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla final int jobId = intent.getIntExtra(EXTRA_JOB_ID_KEY, hashCode()); 513ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla JobInfo.Builder jobBuilder = new JobInfo.Builder(jobId, jobServiceComponent) 523ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla .setBackoffCriteria(JOB_INITIAL_BACKOFF, JobInfo.BACKOFF_POLICY_LINEAR) 533ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla .setMinimumLatency(JOB_MINIMUM_LATENCY); 543ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla final int result = jobScheduler.schedule(jobBuilder.build()); 553ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla if (result != JobScheduler.RESULT_SUCCESS) { 563ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla Log.e(TAG, "Could not schedule job " + jobId); 573ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla } else { 583ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla Log.d(TAG, "Successfully scheduled job with id " + jobId); 593ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla } 603ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla break; 61106203bc539589d1063d70737c7d0f399100ae94Suprabh Shukla default: 62106203bc539589d1063d70737c7d0f399100ae94Suprabh Shukla Log.e(TAG, "Unknown action " + intent.getAction()); 633ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla } 643ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla finish(); 653ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla } 663ac1daac4044c70ad4ee673214074306de499a18Suprabh Shukla}