Android属性服务

合集下载

android systemservice类理解

android systemservice类理解

android systemservice类理解Android SystemServer类是Android系统中的一个重要组件,负责管理系统中的各种服务和功能模块。

了解SystemServer类的工作原理和功能对于理解Android系统的整体架构非常重要。

本文将深入探讨Android SystemServer类的相关知识,帮助读者更好地理解和掌握Android系统的工作原理。

SystemServer类是Android系统启动过程中的一个关键角色,它在系统启动时被创建并负责启动和管理系统中的各种服务。

SystemServer类的主要作用包括但不限于以下几个方面:1. 启动系统服务:SystemServer类负责启动系统中的各种服务,包括ActivityManagerService、PowerManagerService、PackageManagerService等。

这些系统服务是Android系统正常运行的基础,SystemServer类通过启动这些服务确保系统的正常运行。

2. 管理系统功能模块:SystemServer类还负责管理系统中的各种功能模块,包括输入管理、窗口管理、通信管理等。

它通过调用相应的模块来管理系统的各项功能,确保系统的稳定运行。

3. 处理系统启动流程:SystemServer类在系统启动时被创建并启动,它会依次启动系统中的各个服务和功能模块,完成系统的初始化和准备工作。

系统启动的过程中,SystemServer类扮演着重要的角色。

了解SystemServer类的工作原理和功能有助于我们更好地理解Android系统的整体架构。

在Android系统的启动过程中,SystemServer类起着至关重要的作用,它负责启动系统中的各种服务和功能模块,确保系统的正常运行。

SystemServer类的工作原理可以总结为以下几个步骤:1. 创建SystemServer实例:系统启动时,SystemServer类的实例会被创建并初始化。

androidpersist属性使用

androidpersist属性使用

androidpersist属性使用Android的`android:persist`属性用于指示应用程序是否可以在重新启动后继续保持其状态。

当`android:persist`属性设置为`true`时,系统会尝试在设备重启后恢复应用程序的状态。

这有助于提供更好的用户体验,因为用户可以在重新启动后继续与应用程序进行互动,而无需重新开始。

要使用`android:persist`属性,需要在应用程序的清单文件(`AndroidManifest.xml`)中添加以下代码:```xml<activity...</activity>```在上述示例中,`MainActivity`是要使用`android:persist`属性的活动。

使用`android:persist`属性时需要注意以下几点:1. `android:persist`属性仅适用于活动。

它不能应用于服务、广播接收器或其他组件。

2. 在应用程序的清单文件中使用`android:persist`属性时,确保将其添加到要恢复状态的每个活动上。

3. 保留`android:persist`属性的默认值为`false`。

设置为`true`时,系统才会尝试在设备重启后恢复应用程序的状态。

4. 当重新启动设备时,系统会尝试恢复每个具有`android:persist`属性设置为`true`的活动的状态。

但是,如果设备内存不足,系统可能会清除一些应用程序的状态。

5. 使用`android:persist`属性可能会对应用程序的性能产生一定的影响。

因此,只有当应用程序需要持久保持其状态并且性能牺牲可接受时,才应使用此属性。

虽然`android:persist`属性可以确保应用程序在重新启动后保持其状态,但是这并不是持久化数据的最佳解决方案。

如果应用程序需要保存和恢复大量的数据,建议使用其他持久化技术,如`SharedPreferences`、数据库或文件存储。

Android开发之ConfigChanges属性详解

Android开发之ConfigChanges属性详解
“keyboardHidden“
The keyboard accessibility has changed — for example, the user has slid the keyboard out to expose it.用户打开手机硬件键盘
“navigation“
The navigation type has changed. (This should never normally happen.)
“mnc“
The IMSI mobile network code (MNC) has changed — that is, a SIMhasbeendetected and updated the MNC.移动网号,在一个国家或者地区中,用于区分手机用户的服务商。
“locale“
The locale has changed — for example, the user has selected a new language that text should be displayed in.用户所在地区发生变化。
在Activity中添加了android:configChanges属性,目的是当所指定属性(Configuration Changes)发生改变时,通知程序调用onConfigurationChanged()函数。
如需了解更多android开发知识,请至麦子学院官网uchscreenhas changed. (This should never normally happen.)
“keyboard“
The keyboard type has changed — for example, the user has plugged in an external keyboard.键盘模式发生变化,例如:用户接入外部键盘输入。

Android四大组件详解

Android四大组件详解

Android四⼤组件详解注:本⽂主要来⾃⽹易的⼀个博主的⽂章,经过阅读,总结,故留下⽂章在此四⼤基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver⼴播接收器。

⼀:了解四⼤基本组件Activity :应⽤程序中,⼀个Activity通常就是⼀个单独的屏幕,它上⾯可以显⽰⼀些控件也可以监听并处理⽤户的事件做出响应。

Activity之间通过Intent进⾏通信。

在Intent 的描述结构中,有两个最重要的部分:动作和动作对应的数据。

典型的动作类型有:M AIN(activity的门户)、VIEW、PICK、EDIT 等。

⽽动作对应的数据则以URI 的形式进⾏表⽰。

例如:要查看⼀个⼈的联系⽅式,你需要创建⼀个动作类型为VIEW 的intent,以及⼀个表⽰这个⼈的URI。

与之有关系的⼀个类叫IntentFilter。

相对于intent 是⼀个有效的做某事的请求,⼀个intentfilter 则⽤于描述⼀个activity(或者IntentReceiver)能够操作哪些intent。

⼀个activity 如果要显⽰⼀个⼈的联系⽅式时,需要声明⼀个IntentFilter,这个IntentFilter 要知道怎么去处理VIEW 动作和表⽰⼀个⼈的URI。

IntentFilter 需要在AndroidManifest.xml 中定义。

通过解析各种intent,从⼀个屏幕导航到另⼀个屏幕是很简单的。

当向前导航时,activity 将会调⽤startActivity(Intent myIntent)⽅法。

然后,系统会在所有安装的应⽤程序中定义的IntentFilter 中查找,找到最匹配myIntent 的Intent 对应的activity。

新的activity 接收到myIntent 的通知后,开始运⾏。

当startActivity ⽅法被调⽤将触发解析myIntent 的动作,这个机制提供了两个关键好处:A、Activities 能够重复利⽤从其它组件中以Intent 的形式产⽣的⼀个请求;B、Activities 可以在任何时候被⼀个具有相同IntentFilter 的新的Activity 取代。

android系统属性

android系统属性

Android的属性系统2011-04-10 17:42每个属性都有一个名称和值,他们都是字符串格式。

属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。

属性是在整个系统中全局可见的。

每个进程可以get/set属性。

在系统初始化时,Android将分配一个共享内存区来存储的属性。

这些是由“init”守护进程完成的,其源代码位于:device/system/init。

“init”守护进程将启动一个属性服务。

属性服务在“init”守护进程中运行。

每一个客户端想要设置属性时,必须连接属性服务,再向其发送信息。

属性服务将会在共享内存区中修改和创建属性。

任何客户端想获得属性信息,可以从共享内存直接读取。

这提高了读取性能。

客户端应用程序可以调用libcutils中的API函数以GET/SET属性信息。

libcutils的源代码位于:device/libs/cutils。

API函数是:int property_get(const char *key, char *value, const char *default_value);int property_set(const char *key, const char *value);而libcutils又调用libc中的__system_property_xxx 函数获得共享内存中的属性。

libc的源代码位于:device/system/bionic。

属性服务调用libc中的__system_property_init函数来初始化属性系统的共享内存。

当启动属性服务时,将从以下文件中加载默认属性:/ default.prop/system/build.prop/system/default.prop/data/local.prop属性将会以上述顺序加载。

后加载的属性将覆盖原先的值。

这些属性加载之后,最后加载的属性会被保持在/data/property中。

安卓系统属性

安卓系统属性

android系统属性build.prop,所在位置:out\target\product\kylin\system\build.prop用数据线连接android 设置,进入调试模式(在android的设置--应用程序--开发--USB调试)开始--运行--CMDC:\Documents and Settings\Administrator>adb shell# cd systemcd system# lslsapp build.prop fonts lib usrbin etc framework media xbin可以看到build.prop,这个就是系统的属性表,若要COPY出来,这样操作:比如COPY到D盘的leo目录下C:\Documents and Settings\Administrator>adb pull system/build.prop d://leo120 KB/s (0 bytes in 1925.000s)C:\Documents and Settings\Administrator>可用记事本打开查看若要在java代码里读取里面的属性值,则需用到android.os.SystemProperties这个类,此类未开放(未提供给SDK API),此类具体位置:frameworks\base\core\java\android\os\SystemProperties.java能够在frameworks里面使用,比如在所有文件policies\base\phone\com\android\internal\policy\impl\LockScreen.java 里使用final boolean isMonkey = SystemProperties.getBoolean("ro.monkey", false);也能够在android自带的APP 里使用,比如在Settings app里使用packages\apps\Settings\src\com\android\settings\deviceinfo\Status.java//leo added for KYLIN-529if(SystemProperties.get("").equals("surfone_citic"))。

android systemservice类理解

android systemservice类理解

android systemservice类理解在Android中,`SystemService`(系统服务)是一种提供系统级功能的组件。

它允许应用程序与系统的核心功能进行交互,而无需了解底层实现细节。

系统服务是一种将设备功能暴露给应用程序的机制,使应用程序能够访问设备硬件、系统资源和其他关键功能。

系统服务是由Android操作系统管理和提供的,应用程序可以通过系统服务与这些功能进行通信。

一些常见的系统服务包括:1. ActivityManager: 管理应用程序的生命周期和任务栈。

2. PackageManager: 管理应用程序的安装、卸载和信息查询。

3. WindowManager: 管理窗口和界面元素。

4. NotificationManager: 管理通知。

5. TelephonyManager: 提供与电话相关的信息和功能。

6. ConnectivityManager: 管理网络连接。

7. LocationManager: 提供地理位置信息。

8. PowerManager: 管理设备的电源状态。

9. AudioManager: 控制音频设置和管理音频。

10. SensorManager: 管理设备上的传感器。

11. Vibrator: 控制设备的振动。

这些系统服务是通过`Context`对象的`getSystemService()`方法获得的。

例如,要获取`AudioManager`:```javaAudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);```这里的`Context`是Android应用程序的一个关键组件,提供了应用程序的全局信息和对Android环境的访问权限。

系统服务的使用使应用程序能够访问设备功能,而无需实现这些功能的底层逻辑。

这样,Android提供了一种标准的接口,允许应用程序开发者专注于其应用的特定功能,而不必处理底层的硬件和系统细节。

android 的一些属性

android 的一些属性
android:maxHeight设置文本区域的最大高度
android:maxLength限制显示的文本长度,超出部分不显示。
android:maxLines设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。
android:maxWidth设置文本区域的最大宽度
android:numeric如果被设置,该TextView有一个数字输入法。
android:password以小点”.”显示文本
android:phoneNumber设置为电话号码的输入方式
android:privateImeOptions设置输入法选项
android:scrollHorizontally设置文本超出TextView的宽度的情况下,是否出现横拉条
android:selectAllOnFocus如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。TextView中设置后无效果。
android:shadowColor指定文本阴影的颜色,需要与shadowRadius一起使用
android:shadowDx设置阴影横向坐标开始位置。
android:text设置显示文本.
android:textSize设置文字大小,推荐度量单位”sp”
android:textStyle设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
android:typeface设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android属性服务
Windows平台上有有一个叫注册表的东西。

注册表可以存储一些键值对。

一般而言,系统或某些应用程序会把自己的一些属性存储在注册表中,即使系统重启或应用程序重启,它还能够根据之前在注册表中设置的属性,进行相应的初始化工作。

Android平台也提供了一个类似的机制,称之为属性服务(property service)。

应用程序可通过这个属性机制,查询或设置属性。

可以通过adb shell登陆到真机,使用getprop命令查看当前系统中有哪些属性。

如下是登陆到FTS920查看到的相关属性值:
[localhost@/]# getprop
getprop
[ro.secure]: [0]
[ro.allow.mock.location]: [1]
[ro.debuggable]: [1]
[persist.service.adb.enable]: [1]
[ro.factorytest]: [0]
[ro.serialno]: []
[ro.bootmode]: [unknown]
[ro.baseband]: [unknown]
[ro.carrier]: [unknown]
[ro.bootloader]: [unknown]
[ro.hardware]: [pxa910-based]
[ro.revision]: [0]
[ro.product.model]: [FTS920]
[]: [FTS920]
[ro.product.device]: [FTS920]
[ro.product.board]: [FTS920]
[dalvik.vm.heapsize]: [36m]
[dalvik.vm.jniopts]: [warnonly]
[ro.opengles.version]: [131072]
……
在init.c文件的main函数中,先后调用了3处跟属性服务相关的操作:
1.
2.
3.
本文围绕如上三处调用说明属性服务的初始化和属性服务器的工作原理。

1.属性服务初始化
(1)创建存储空间
该函数首先创建了一块存储属性的共享内存,然后加载属性文件内容。

首先看下
主要做了两个事情:
①把属性区域创建在共享内存上(32k)
②提供了对外操作该属性区域的句柄
(2)客户端进程获取存储空间
Android利用了gcc的constructor属性,当bionic libc库被加载时,将自动调用libc_preinit,完成共享内存到本地进程的映射。

初始化客户端的属性存储区域:
取出属性存储区域的文件描述符,映射上面创建的共享内存到本地进程空间,这样本地进程就可使用这块共享内存了。

综上,客户端可直接读取属性空间,但是没权限设置属性。

那么客户端是如何设置属性的呢?
2.属性服务器分析
(1)属性服务器的启动
加载如下路径的属性文件,并设置到属性空间中。

属性服务创建了创建了一个接收请求的socket,那这个请求在何处被处理呢?
(2)处理设置属性请求
当属性服务器接收到客户端请求时,init会调用handle_property_set_fd处理。

该函数完成以下几件事情:接收TCP连接、取出客户端进程权限属性、请求接收数据,进行相应属性设置处理。

控制消息:setprop ctl.start bootanim/setprop ctl.stop bootanim
其它消息:setprop persit.sys.log.debug.enable 1
(3)客户端发送请求
客户端通过property_set发送请求:
建立socket连接,发送请求消息。

至此,Android属性服务的代码实现介绍完毕。

QA:
1.自定了系统属性log.debug.enable,使用系统提供的api设置无效?
2.ro/persist/net等字段开头的属性有什么特点?
3.是否可以通过属性值的变化控制系统启动的服务?
4.在Java中如何获取和设置系统属性?在本地代码中如何获取和设置系统属性?
以下参考文档可供大家进一步了解学习属性系统:
1./jackyu613/article/details/6136620
2./tekkamanitachi/article/details/4280982
3./read.php?tid=13375
4./netpirate/article/details/4799272
5./andyhuabing/article/details/7406930。

相关文档
最新文档