Android Jetpack应用指南学习笔记1之Lifecycle的简单使用

前言:

AndroidJetpack应用指南学习笔记1LifeCycle的简单使用

1.LifeCycle的引入:

在App的build.gradle目录下添加如下依赖:
Android Jetpack应用指南学习笔记1之Lifecycle的简单使用_第1张图片implementation “androidx.lifecycle:lifecycle-extensions:2.2.0”

2.创建Service服务继承LifecycleService,因为LifecycleService是Service子类,和Service使用上没什么区别

创建服务的观察者:
Android Jetpack应用指南学习笔记1之Lifecycle的简单使用_第2张图片
package com.example.lifecycledemo.service;

import android.util.Log;

import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;

/**

  • @author: njb

  • @date: 2020/8/23 0023 0:20

  • @desc:
    */
    public class MyServiceObserver implements LifecycleObserver {
    private String TAG = this.getClass().getName();

    //当Service的onCreate()方法被调用时,改方法会被调用
    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    private void startGetLocation(){
    Log.d(TAG,“startGetLocation()”);
    }

    //当service的onDestroy(方法被调用时,该方法会被调用
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    private void stopGetLocation(){
    Log.d(TAG,“stopGetLocation()”);
    }

}

3.在服务中将观察者与被观察者绑定

Android Jetpack应用指南学习笔记1之Lifecycle的简单使用_第3张图片
package com.example.lifecycledemo.service;

import androidx.lifecycle.LifecycleService;

/**

  • @author: njb

  • @date: 2020/8/23 0023 0:17

  • @desc:
    */
    public class MyService extends LifecycleService {
    private MyServiceObserver myServiceObserver;

    public MyService(){
    myServiceObserver = new MyServiceObserver();

    //将观察者与被观察者绑定
    getLifecycle().addObserver(myServiceObserver);
    

    }
    }

4.使用示例,这里以模仿开启和停止定位为例

Android Jetpack应用指南学习笔记1之Lifecycle的简单使用_第4张图片
package com.example.lifecycledemo;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import com.example.lifecycledemo.service.MyService;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

/**
 * 开始定位
 * @param view
 */
public void startLocation(View view) {
    Intent intent = new Intent(MainActivity.this, MyService.class);
    startService(intent);
}

/**
 * 停止定位
 * @param view
 */
public void stopLocation(View view) {
    Intent intent = new Intent(MainActivity.this, MyService.class);
    stopService(intent);
}

}

5.布局文件activity_main代码:

xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
tools:context=“.MainActivity”>




6注意!注意!.注意!不要忘记在manifest注册Myservice:

Android Jetpack应用指南学习笔记1之Lifecycle的简单使用_第5张图片

7.完整界面截图如下:

Android Jetpack应用指南学习笔记1之Lifecycle的简单使用_第6张图片

8.打印日志如下:

Android Jetpack应用指南学习笔记1之Lifecycle的简单使用_第7张图片

你可能感兴趣的:(Android,Jetpack,android)