android的PreferenceActivity

article/2025/10/29 22:49:00

前言

这段时间在研究android平台上的开源项目——StandupTimer,这是由jwood所设计的一个较为简单android应用,用于控制会议时间,类似秒表倒计时。

PreferenceActivity

PreferenceActivity是android提供的对系统信息和配置进行自动保存的Activity,它通过 SharedPreference方式将信息保存在XML 文件当中。使用PreferenceActivity不需要我们对SharedPreference进行操作,系统会自动对Activity 的各种View上的改变进行保存(这个真是太赞了!)。
在android项目中添加一个 android xml 文件需要注意的是这次选择的是 Preference。而不是以往的Layout
这个文件是保存在 res /xml 路径下的。

PreferenceScreen xml

preference下的View是有限的,只有下面几个:
  • CheckBoxPreference:CheckBox选择项,对应的值的ture或flase
  • EditTextPreference:输入编辑框,值为String类型,会弹出对话框供输入。
  • ListPreference: 列表选择,弹出对话框供选择。
  • Preference:只进行文本显示,需要与其他进行组合使用。
  • PreferenceCategory:用于分组。
  • RingtonePreference:系统玲声选择
更多关于 PreferenceScreen的介绍可以查看博客园上的一篇文章: Android之PreferenceActivity
   

 

android:key 唯一标识符。它对应保存的XML保存的配置文件中的节点的 name属性
android:defaultValue 默认值,对应XML中的Value属性的值。
   
/**
* PreferenceActivity 会自动保存更改
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.addPreferencesFromResource(R.xml.setting);
}

 

当PreferenceActivity上的View有所更改时,系统会自动将对应的值更新到XML配置文件中,该文件可以在android 的 file explorer 中的 data/data/"yourPageName"/shared_prefs/"yourpageName"_prefenrences.xml中找到。“yourpageName”表示你项目所在的包。

获取配置信息

为了方便的获取配置信息,我们可以在PreferenceActivity里添加一些pulbic 方法来公开配置信息的访问。
  

  getDefaultSharedPreferences(Context )用来获取preferences.以后的操作就和普通的Sharedpreferences一样了,如果需要修改某项配置的信息,记得最后需要 commit()。

当其他地方需要使用配置时,可以直接调用 setting.getXXX() 方法来获取配置信息。


http://chatgpt.dhexx.cn/article/6ZIWTmh5.shtml

相关文章

用StopWatch统计耗时,比System.currentTimeMillis好用

平时项目中统计耗时都用System.currentTimeMillis,最近看到一个spring-StopWatch统计耗时,其用法简单明了,比传统统计耗时方法好用。 StopWatch 的内部是通过 System.nanoTime() 来计时的,本质和 System.currentTimeMillis() 差别…

并发慎用——System.currentTimeMillis()

好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受. System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快…

System.currentTimeMillis()的性能问题以及解决方法

System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。但实际上在并发调用或者特别频繁调用它的情况下(比如一个业务繁忙的接口,或者吞吐量大的需要取得时…

统计代码执行时间时,System.currentTimeMillis()与System.nanoTime()哪个更适合?

目录 1.nanoTime是什么? 2.currentTimeMillis是什么? 3.nanoTime与currentTimeMillis在JDK中阐述 4.nanoTime与currentTimeMillis使用对比 5.深究从OpenJDK源代码、glibc,一直到Linux内核 6.总结 1.nanoTime是什么? ns&…

System.currentTimeMillis的性能如何

一、背景 撸代码时发现System.currentTimeMillis的调用都被封装成了cache类型,代码如下: 那么System.currentTimeMillis真的有这么这么差吗,如果差的话又是什么原因造成的?什么情况下可以直接调用原生方法,什么情况下需要使用缓存…

别再用 System.currentTimeMillis 统计耗时了,太 Low,试试 Spring Boot 源码在用的 StopWatch吧,够优雅

大家好,我是二哥呀! 昨天,一位球友问我能不能给他解释一下 SpringBootApplication 注解是什么意思,还有 Spring Boot 的运行原理,于是我就带着他扒拉了一下这个注解的源码,还有 SpringApplication 类的 ru…

System.currentTimeMillis的性能,真有如此不堪吗?

# 疑惑,System.currentTimeMillis真有性能问题? 最近我在研究一款中间件的源代码时,发现它获取当前时间不是通过System.currentTimeMillis,而是通过自定义的System.currentTimeMillis的缓存类(见下方)&…

疑惑,System.currentTimeMillis真有性能问题?

点击关注公众号,Java干货及时送达 System.currentTimeMillis的性能真有如此不堪吗? 最近我在研究一款中间件的源代码时,发现它获取当前时间不是通过System.currentTimeMillis,而是通过自定义的System.currentTimeMillis的缓存类&a…

高并发下System.currentTimeMillis()性能问题及优化方案

文章目录 背景System.currentTimeMillis()性能测试单线程测试多线程测试 原因优化优化代码单线程测试多线程测试 参考 背景 最近在看asyncTool源码发现了System.currentTimeMillis存在卡顿问题,所以就详细研究了下。具体如何呢?我们来看看 System.curr…

currentTimeMillis()方法

currentTimeMillis()方法返回一个long类型的值,该值表示的是当前时间与1970年1月1日0时0分0秒之间的时间差,单位是毫秒,习惯上被称为时间戳 源码: 时间戳可以用来计算循环操作时所需要的时间: /*** 向goods表中插入…

Java获取当前时区时间LocalDateTime与System.currentTimeMillis

Java获取当前时区时间 System.currentTimeMillisLocalDateTime最终结果 全球根据纬度不同,划分不同的时区。对于此时此刻,大家同处同一个时间点,但是,每个时区的时间表示是不同的。Java可以使用 System.currentTimeMillis和 Loc…

关于Java currentTimeMillis方法简述

刚刚接触JAVA时,为了便于记录某个方法块的执行时间,通常都会在代码块的执行前和执行后各标记一个时间,取两个时间差。 但是初学者一般只会选择用LocalDateTime来标记,然后用Duration.between来做差值。当然,Duration可…

System.currentTimeMillis()计算方式与时间的单位转换

一、时间的单位转换 1秒1000毫秒(ms) 1毫秒1/1,000秒(s) 1秒1,000,000 微秒(μs) 1微秒1/1,000,000秒(s) 1秒1,000,000,000 纳秒(ns) 1纳秒1/1,000,000,000秒(s) 1秒1,000,000,000,000 皮秒(ps) 1皮秒1/1,000,000,000,000秒(s) …

Java currentTimeMillis()方法介绍

一、官方文档 参考自Java SE 8官方文档: 方法功能:返回从1970年1月1日午夜(UTC)开始到当前时间的毫秒值. 其中,需要特别说明的地方 1.午夜(midnight)指的时间是 0时0分0秒,UTC表示该时间是0时区的时间…

Android中Intent和IntentFilter进行通信

文章目录 Intent启动不同组件的方法ActivityServiceBroadcastReceiver Data,Type属性与intent-filter配置指定Action调用系统的Activity启动Activity的标准Action常量以及对应的字符串标准的Category常量以及对应的字符串 实例一查看并获取联系人电话MainActivity代…

三、Intent 和 Intent过滤器(IntentFilter)

Intent(意图): Intent 是一个消息传递对象,是我们要执行操作的一个抽象描述。我们可以使用它在相应的组件中传递消息和请求。下面是它的主要使用场景: 1. 启动Activity 通过 startActivity() 或者 startActivityForRes…

【Android】Intent 和 Intent Filter

一. Intent 简介 Intent 是一个消息传递对象,您可以用来从其他应用组件请求操作。可以用于:启动 Activity、启动服务、传递广播。 https://developer.android.com/guide/components/intents-filtershttps://developer.android.com/guide/components/i…

Android开发——IntentFilter的匹配规则

1. IntentFilter中的过滤信息 启动Activity分为显式调用和隐式调用,前者没什么好讲的,后者需要Intent能够匹配目标组件的IntentFilter中所设置的过滤信息。包括action、category、data。 一个Activity中可以有多个IntentFilter,一个Intent…

Android中的Intent和Intent-filter总结

一.相关概念 (一)基本概念 Intent中文意思指”意图”,按照Android的设计理念,Android使用Intent来封装程序的”调用意图”,不管启动Activity、Service、BroadcastReceiver,Android都使用统一的Intent对象来封装这一”启动意图”。此外,Inten…

【intent-filter】AndroidManifest中<intent-filter>标签的 部分作用

这里写自定义目录标题 AndroidManifest.xmlIntent-filter 标签Intent-filter 标签中的常用元素Intent-filter 标签的作用Intent对象Intent显式启动活动窗口Intent隐式启动(重要) AndroidManifest.xml AndroidManifest.xml是安卓开发中主配置文件&#x…