跳到主要内容

3 篇博文 含有标签「Android」

查看所有标签

Android基础

· 阅读需 2 分钟
Gwynn
独立开发者 · wawov 作者

ThreadLocal

ThreadLocal是如何做到为每一个线程维护变量的副本的呢?其实实现的思路很简单:在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本。

AndroidManifest解析

· 阅读需 6 分钟
Gwynn
独立开发者 · wawov 作者

关于AndroidManifest.xml

AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation。

各个节点的详细介绍

(<manifest>)属性
<manifest  xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woody.test"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly | preferExternal"] >
</manifest>
  • sharedUserId,表明数据权限,因为默认情况下,Android给每个APK分配一个唯一的UserID,所以是默认禁止不同APK访问共享数据的。若要共享数据,第一可以采用Share Preference方法,第二种就可以采用sharedUserId了,将不同APK的sharedUserId都设为一样,则这些APK之间就可以互相共享数据了
  • sharedUserLabel,一个共享的用户名,它只有在设置了sharedUserId属性的前提下才会有意义
  • versionCode,给设备程序识别版本(升级)用的必须是一个interger值代表app更新过多少次
  • versionName,这个名称是给用户看的,你可以将你的APP版本号设置为1.1版
  • installLocation,安装参数,是Android2.2中的一个新特性,installLocation有三个值可以选择:internalOnly、auto、preferExternal。
    • preferExternal,系统会优先考虑将APK安装到SD卡上(当然最终用户可以选择为内部ROM存储上,如果SD存储已满,也会安装到内部存储上)
    • auto,系统将会根据存储空间自己去适应
    • internalOnly,是指必须安装到内部才能运行

NDK入门

· 阅读需 6 分钟
Gwynn
独立开发者 · wawov 作者

JNI中C与java类型对应表

字符Java类型C类型
Vvoidvoid
Zjbooleanboolean
Ijintint
Jjlonglong
Djdoubledouble
Fjfloatfloat
Bjbytebyte
Cjcharchar
Sjshortshort
数组则以"["开始,用两个字符表示
[IjintArrayint[]
[FjfloatArrayfloat[]
[BjbyteArraybyte[]
[CjcharArraychar[]
[SjshortArrayshort[]
[DjdoubleArraydouble[]
[JjlongArraylong[]
[ZjbooleanArrayboolean[]

开始编写jni

当java调用,

static {
System.loadLibrary("hello");
}

jni会尝试去寻找JNI_OnLoad方法,所以一些初始化的东西就可以在这里面实现。