当前位置: 首页 > news >正文

【Android】SettingsPreferenceService

一,概述

AndroidSDK36平台,新增了SettingsPreferenceService类,位于SDK中android.service.settings.preferences下,主要作用是提供系统应用对系统设置的交互,包括读取、设置系统设置的偏好能力

整体架构图如下

该功能组件如下,采用CS架构,通过binder实现与设置的通信

客户端API集成在SettingsPreferenceServiceClient类中,目前提供了三个公开接口,

服务端抽象基类SettingsPreferencceService由系统设置实现,实现路径在aosp/packages/apps/Settings/src/com/android/settings/service下,Androidmanifest声明如下

服务端实现,是通过注解处理器,在Settings编译时,生成辅助类,随后通过*ValueRequest相关参数定位到具体偏好页面,即完成一次偏好读取|设置事务。

二,实例

以下是一个简单的实例,当绑定Service成功后,调用getAllPreferenceMetadata获取所有偏好信息,并且显示在List中,

package com.example.myapplication;import static android.service.settings.preferences.SettingsPreferenceValue.TYPE_BOOLEAN;import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.OutcomeReceiver;
import android.service.settings.preferences.GetValueRequest;
import android.service.settings.preferences.GetValueResult;
import android.service.settings.preferences.MetadataRequest;
import android.service.settings.preferences.MetadataResult;
import android.service.settings.preferences.SetValueRequest;
import android.service.settings.preferences.SetValueResult;
import android.service.settings.preferences.SettingsPreferenceMetadata;
import android.service.settings.preferences.SettingsPreferenceServiceClient;
import android.service.settings.preferences.SettingsPreferenceValue;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;import androidx.activity.ComponentActivity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.util.Consumer;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;@SuppressLint("NewApi")
public class SettingsPreferenceServiceDemoActivity extends ComponentActivity {private static final String TAG = "SettingsPreferenceServiceDemoActivity";private boolean isConnect = false;private ExecutorServi

相关文章:

  • 网络协议之为什么要分层
  • Mamba2模型的实现
  • 《系统架构 - Java 企业应用架构中的完整层级划分》
  • 大学之大:韩国科学技术研究院2025.4.28
  • 聊一聊接口自动化测试的稳定性如何保障
  • 探秘Transformer系列之(31)--- Medusa
  • 嵌入式RTOS实战:uC/OS-III最新版移植指南(附项目源码)
  • DAY9-USF4.0技术文档笔记
  • 学习笔记:Qlib 量化投资平台框架 — MAIN COMPONENTS (Part I)
  • PHP经验笔记
  • 【C++教程】三目运算符
  • Vue3中Hooks与普通函数的区别
  • 高效的CMS能帮助你快速建站。
  • 微机控制电液伺服钢轨滚动疲劳试验机
  • 喜马拉雅卖身腾讯音乐:在线音频独立时代的终结
  • shell(3)
  • 软件评测师考点重点知识
  • NdrpPointerUnmarshallInternal函数分析之pStubMsg--pAllocAllNodesContext的由来
  • vmare pro安装报错用户在命令行上发出了EULAS_AGREED=1,表示不接受许可协议的错误解决方法
  • MCP:如何通过模型控制推理助力AI模型实现“深度思考”?
  • 暗蓝评《性别打结》丨拆解性别之结需要几步?
  • 老凤祥一季度净利减少两成,去年珠宝首饰营收下滑19%
  • 诗词文赋俱当歌,听一听古诗词中的音乐性
  • 淮安四韵·名城新章: 网络名人领略“运河之都”魅力
  • 澎湃思想周报丨数字时代的育儿;凛冬已至好莱坞
  • 国家发展改革委:我们对实现今年经济社会发展目标任务充满信心