1892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn/* 2892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * Copyright (C) 2013 The Android Open Source Project 3892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * 4892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 5892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * you may not use this file except in compliance with the License. 6892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * You may obtain a copy of the License at 7892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * 8892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 9892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * 10892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * Unless required by applicable law or agreed to in writing, software 11892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 12892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * See the License for the specific language governing permissions and 14892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn * limitations under the License. 15892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn */ 16892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn 17892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackbornpackage com.example.android.supportv4.content; 18892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn 19892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn//BEGIN_INCLUDE(complete) 20892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackbornimport android.app.IntentService; 21892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackbornimport android.content.Intent; 22892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackbornimport android.os.SystemClock; 23892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackbornimport android.util.Log; 24892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn 25892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackbornpublic class SimpleWakefulService extends IntentService { 26892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn public SimpleWakefulService() { 27892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn super("SimpleWakefulService"); 28892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn } 29892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn 30892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn @Override 31892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn protected void onHandleIntent(Intent intent) { 32892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // At this point SimpleWakefulReceiver is still holding a wake lock 33892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // for us. We can do whatever we need to here and then tell it that 34892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // it can release the wakelock. This sample just does some slow work, 35892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // but more complicated implementations could take their own wake 36892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // lock here before releasing the receiver's. 37892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // 38892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // Note that when using this approach you should be aware that if your 39892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // service gets killed and restarted while in the middle of such work 40892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // (so the Intent gets re-delivered to perform the work again), it will 41892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // at that point no longer be holding a wake lock since we are depending 42892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // on SimpleWakefulReceiver to that for us. If this is a concern, you can 43892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn // acquire a separate wake lock here. 44892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn for (int i=0; i<5; i++) { 45892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn Log.i("SimpleWakefulReceiver", "Running service " + (i+1) 46892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn + "/5 @ " + SystemClock.elapsedRealtime()); 47892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn try { 48892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn Thread.sleep(5000); 49892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn } catch (InterruptedException e) { 50892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn } 51892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn } 52892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn Log.i("SimpleWakefulReceiver", "Completed service @ " + SystemClock.elapsedRealtime()); 53892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn SimpleWakefulReceiver.completeWakefulIntent(intent); 54892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn } 55892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn} 56892f76ff05e47ede28413dcdc4cb8036dee8beceDianne Hackborn//END_INCLUDE(complete) 57