当前位置: 首页 > 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
http://www.xdnf.cn/news/193087.html

相关文章:

  • (002)Excel 使用图表,统计
  • conda和bash主环境的清理
  • 【优秀三方库研读】【性能优化点滴】odygrd/quill 解决伪共享
  • AcWing 885:求组合数 I ← 杨辉三角
  • vs2022解决 此项目需要MFC库。从visual studio安装程序(单个组件选项卡)为正在使用的任何工具和体系结构安装他们问题
  • JQ6500语音模块详解(STM32)
  • C++ 之 【模拟实现 list(节点、迭代器、常见接口)】(将三个模板放在同一个命名空间就实现 list 啦)
  • 电子电器架构 -- 汽车零部件DV试验与PV试验的定义及关键差异
  • [ 问题解决 ] sqlite3.ProgrammingError: SQLite objects created in a thread can ...
  • mybatis的xml ${item}总是更新失败
  • npm init、换源问题踩坑
  • 【Python数据驱动决策】数据分析与可视化全流程实战指南
  • 论文导读 - 基于边缘计算、集成学习与传感器集群的便携式电子鼻系统
  • Vue基础(7)_计算属性
  • C++核心编程:类与对象全面解析
  • Infrared Finance:Berachain 生态的流动性支柱
  • 车载软件架构 --- AUTOSAR的方法论
  • SwiftUI 8.List介绍和使用
  • 零基础制作Freertos智能小车(教程非常简易)持续更新中....
  • DeepSeek创始人梁文峰是个什么样的人?
  • LLM - Large Language Model
  • Android Studio 中使用 SQLite 数据库开发完整指南(Kotlin版本)
  • Redis最佳实践
  • nginx代理websocket时ws遇到仅支持域名访问的处理
  • 23种设计模式 -- 工厂模式
  • 算力困局:AI 狂飙背后的能源枷锁与破局之道
  • 后端[特殊字符][特殊字符]看前端之Row与Col
  • 1.9多元函数积分学
  • Day15(贪心算法)——LeetCode121.买卖股票的最佳时机55.跳跃游戏
  • 【计网】计算机网络的类别与性能