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