public class LocationActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location);
//在页面创建时 初始化定位管理信息
initLocation();
}
@Override
protected void onResume() {
super.onResume();
///在页面显示时 开始定位
startLocation();
}
@Override
protected void onDestroy() {
super.onDestroy();
//在页面销毁时停止定位
stopLocation();
}
}
package com.xinhe.testandroid;
import android.util.Log;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
public class MyLocationListener implements LifecycleObserver {
public static final String TAG = "Location";
/**
* 使用注解,使得在create时调用
*/
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void initLocation() {
Log.d(TAG, "initLocation");
}
/**
* 使用注解,使得在resume时调用
*/
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void startLocation() {
Log.d(TAG, "startLocation");
}
/**
* 使用注解,使得在destroy时调用
*/
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void stopLocation() {
Log.d(TAG, "stopLocation");
}
}
package com.xinhe.testandroid;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "Location";
public MyLocationListener myLocationListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化定位对象
myLocationListener = new MyLocationListener();
getLifecycle().addObserver(myLocationListener);
Log.d(TAG,"onCreate");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG,"onResume");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG,"onDestroy");
}
}
Location: onCreate
Location: initLocation
Location: onResume
Location: startLocation
// 退出应用后
Location: stopLocation
Location: onDestroy
public class BlankFragment extends Fragment {
private static final String TAG = "Fragment";
public MyLocationListener myLocationListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG,"onCreate");
//初始化定位对象
myLocationListener = new MyLocationListener();
getLifecycle().addObserver(myLocationListener);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_blank, container, false);
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG,"onResume");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG,"onDestroy");
}
}
implementation ‘androidx.lifecycle:lifecycle-extensions:2.2.0‘
public class MyService extends LifecycleService {
private static final String TAG = "MyServiceObserver";
private MyServiceObserver myServiceObserver;
public MyService(){
myServiceObserver = new MyServiceObserver();
getLifecycle().addObserver(myServiceObserver);
}
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG,"onCreate");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG,"onDestroy");
}
}
public class MyServiceObserver implements LifecycleObserver {
private static final String TAG = "MyServiceObserver";
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void startService(){
Log.d(TAG,"在MyServiceObserver中监听到Service启动 ");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void stopService(){
Log.d(TAG,"在MyServiceObserver中监听到Service停止 ");
}
}
public class MainActivity extends AppCompatActivity {
private static final String TAG = "Location";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void start(View view) {
Intent intent = new Intent(MainActivity.this,MyService.class);
startService(intent);
}
public void stop(View view) {
Intent intent = new Intent(MainActivity.this,MyService.class);
stopService(intent);
}
}
// startservice
MyServiceObserver: onCreate
MyServiceObserver: 在MyServiceObserver中监听到Service启动
// stopservice
MyServiceObserver: 在MyServiceObserver中监听到Service停止
MyServiceObserver: onDestroy
implementation ‘androidx.lifecycle:lifecycle-extensions:2.2.0‘
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
ProcessLifecycleOwner.get().getLifecycle().addObserver(new ApplicatonOberver());
}
}
package com.xinhe.testandroid;
import android.util.Log;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
class ApplicatonOberver implements LifecycleObserver {
private static final String TAG = "ApplicatonOberver";
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
public void onCreate(){
Log.d(TAG,"onCreate in ApplicatonOberver");
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart(){
Log.d(TAG,"onStart in ApplicatonOberver");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void onResume(){
Log.d(TAG,"onResume in ApplicatonOberver");
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
public void onPause(){
Log.d(TAG,"onPause in ApplicatonOberver");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onStop(){
Log.d(TAG,"onStop in ApplicatonOberver");
}
/**
* 该方法永远不会被调用,因为系统不会分发ON_DESTROY事件
*/
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
public void onDestroy(){
Log.d(TAG,"onDestroy in ApplicatonOberver");
}
}
APP刚启动时会依次执行以下三种方法
onCreate in ApplicatonOberver
onStart in ApplicatonOberver
onResume in ApplicatonOberver
APP切换到后台时会执行以下两种方法
onPause in ApplicatonOberver
onStop in ApplicatonOberver
APP再次切换到前台时会执行以下两种方法
onStart in ApplicatonOberver
onResume in ApplicatonOberver
APP退出
onPause in ApplicatonOberver
onStop in ApplicatonOberver
原文:https://www.cnblogs.com/ArthurWangWang/p/14907614.html