125220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets/* 225220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * Copyright (C) 2016 The Android Open Source Project 325220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * 425220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * Licensed under the Apache License, Version 2.0 (the "License"); 525220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * you may not use this file except in compliance with the License. 625220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * You may obtain a copy of the License at 725220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * 825220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * http://www.apache.org/licenses/LICENSE-2.0 925220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * 1025220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * Unless required by applicable law or agreed to in writing, software 1125220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * distributed under the License is distributed on an "AS IS" BASIS, 1225220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1325220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * See the License for the specific language governing permissions and 1425220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets * limitations under the License. 1525220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets */ 1625220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets 17ba069d50913c3fb250bb60ec310439db36895337Alan Viverettepackage androidx.lifecycle.service; 1825220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets 1925220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinetsimport android.content.Context; 2025220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinetsimport android.content.Intent; 2125220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinetsimport android.os.Binder; 2225220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinetsimport android.os.IBinder; 23ba069d50913c3fb250bb60ec310439db36895337Alan Viverette 24ba069d50913c3fb250bb60ec310439db36895337Alan Viveretteimport androidx.annotation.Nullable; 25ba069d50913c3fb250bb60ec310439db36895337Alan Viveretteimport androidx.lifecycle.Lifecycle; 26ba069d50913c3fb250bb60ec310439db36895337Alan Viveretteimport androidx.lifecycle.LifecycleObserver; 27ba069d50913c3fb250bb60ec310439db36895337Alan Viveretteimport androidx.lifecycle.LifecycleOwner; 28ba069d50913c3fb250bb60ec310439db36895337Alan Viveretteimport androidx.lifecycle.LifecycleService; 29ba069d50913c3fb250bb60ec310439db36895337Alan Viveretteimport androidx.lifecycle.OnLifecycleEvent; 30ba069d50913c3fb250bb60ec310439db36895337Alan Viveretteimport androidx.localbroadcastmanager.content.LocalBroadcastManager; 3125220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets 3225220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinetspublic class TestService extends LifecycleService { 3325220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets 3425220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets public static final String ACTION_LOG_EVENT = "ACTION_LOG_EVENT"; 3525220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets public static final String EXTRA_KEY_EVENT = "EXTRA_KEY_EVENT"; 3625220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets 3725220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets private final IBinder mBinder = new Binder(); 3825220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets 3925220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets public TestService() { 4025220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets getLifecycle().addObserver(new LifecycleObserver() { 41b86bef286718da421268bc52cf4fab7cccb3104cSergey Vasilinets @OnLifecycleEvent(Lifecycle.Event.ON_ANY) 42b86bef286718da421268bc52cf4fab7cccb3104cSergey Vasilinets public void anyEvent(LifecycleOwner owner, Lifecycle.Event event) { 4325220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets Context context = (TestService) owner; 4425220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets Intent intent = new Intent(ACTION_LOG_EVENT); 4525220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets intent.putExtra(EXTRA_KEY_EVENT, event); 4625220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets LocalBroadcastManager.getInstance(context).sendBroadcast(intent); 4725220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets } 4825220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets }); 4925220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets } 5025220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets 5125220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets @Nullable 5225220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets @Override 5325220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets public IBinder onBind(Intent intent) { 5425220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets super.onBind(intent); 5525220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets return mBinder; 5625220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets } 5725220c41be213ea26b00fecb1f55c7ecdfb61c72Sergey Vasilinets} 58