zoukankan      html  css  js  c++  java
  • android应用框架

    Android框架:

    Src:主要完成Java代码的编写

    Gen:系统自动生成的源代码目录

           R.java:默认有attr(属性)、drawable、layout、string 4个静态内部类

    Assets:资源目录

    Bin:输出文件夹

    Res:图片、布局文件、字符串、菜单等文件

           Drawable:存放工程图片信息,默认png格式的图片。

           Layout:存放工程布局文件

           Values:一些重要的值

                  Stings.xml:字符串和数值、Color.xml颜色和颜色字符串数值

                  Dimens.xml:定义尺寸数值、Styles.xml:定义样式

                  Arrays:定义数组

    AndroidManifest.xml:一个用来描述 Android 应用程式「整体资讯」的设定档。

    A包名(package):指定本应用内java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。

    B认证(certificate):指定本应用程序所授予的信任级别,目前有的认证级别有platform(system)、shared、media以及应用自定义的认证。不同的认证可以享受不同的权限。

     C权限组(permission-group):权限组的定义是为了描述一组具有共同特性的权限。

     D权限(permission):权限用来描述是否拥有做某件事的权力。Android系统中权限是分级的,前分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。系统中所有预定义的权限根据作用的不同,分别属于不同的级别。对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。系统应用可以使用任何权限。权限的声明者可无条件使用该权限。

    E权限树(permission-tree):权限树的设置是为了统一管理一组权限,声明于该树下的权限所有者归属该应用。系统提供了API,应用可以在运行时动态添加。 PackageManager.addPermission()

     F使用权限(uses-permission):应用需要的权限应当在此处申请,所申请的权限应当被系统或某个应用所定义,否则视为无效申请。同时,使用权限的申请需要遵循权限授予条件,非platform认证的应用无法申请高级权限。

     GSDK(uses-sdk):标识本应用运行的SDK版本。高兼容性的应用可以忽略此项。

    Happlication:application是Android应用内最高级别(top level)的模块,每个应用内最多只能有一个application,如果应用没有指定该模块,一个默认的application将被启用。 application将在应用启动时最先被加载,并存活在应用的整个运行时生命周期。因此一些初始化的工作适合在本模块完成. Application元素有许多属性,其中:“persistent”表示本应用是否为常驻内存,“enable”表示本应用当前是否应当被加载。

     Iactivity:activity 是application模块的运行时子元素,标识了一个UI。除了application,一个应用可以声明并实现零至多个其它运行时模块,activity也同样。activity也包含了许多定义它工作状态的属性,其中:“name”是必须的,它指定了该activity所在的文件名,如果该文件所属包不同于该应用的包名(即本描述文件的最开始处),那么名字前面需要加入所在包名。activity通过增加intent- fliter来标识哪些intent可以被处理,同时intent也是调度activity的主要参数。

     Jreceiver:receiver 也是application的运行时子元素。receiver通过增加intent-fliter来标识它需要接受哪些intent。当收到intent 后,receiver将根据不同的intent进行不同的处理。当一个Intent发出后,所有注册了该intent的receiver都将会收到,系统会根据receiver在系统中的注册次序顺序发送。当一个receiver处理完该Intent后,系统才会向下一个receiver发送。当一个receiver有多个未接收的intent时,将按照intent发送的次序顺序接收。

     Kservice:service也是application的运行时子元素。Service属于后台模块,启动后将长时间运行,除非停止该service或所在应用进程被杀死。

     Lprovider:provider 也是application的运行时子元素。它继承于ContentProvider,是对该应用管理的用户数据的结构化接入,是基于数据库操作方式的封装。如果应用允许外部应用访问/管理它的用户数据,provider是Android平台提供的最佳方式。

     Mactivity-alias:顾名思义,是已有activity的别名。

     Nuses-library:标识应用启动所必须的共享库。

    每个元素节点都有对个属性来描述该节点的信息,最常用的属性有:android:name=".MyName",定义了节点的文件名,这些声明的属性共同构成了元素节点的信息。

    <activity android:name=".app.MyName"
    <activity android:name="MyName"
    <activity android:name=".MyName"
    activity组件的android:name属性采用类名的简写方式,查看文档类名的简写格式为“.ClassName”,但为什么<activity android:name="MyName">里的android:anem="MyName",而不是android:anem=".MyName"呢? 而后面的所有Activity组件的android:name的值都是“.ClassName”格式呢?马上google查询android:name属性值的说明,但未查到有类名前不加“.”的说明!

    那就实际测试验证结果"MyName"与".MyName"的写法都能正确运行程序。难道类名前有“.”与没有“.”是一样的? 明明文档中说明的是“.ClassName”格式啊!于是把其它的Activity的android:name的值字符串中的第一个“.”去掉,再运行程序,却不行,越发的感觉奇怪!郁闷!经过反复的测试,发现了一个规则:

    如果manifest中指定了package属性,比如指定为"com.android.sample",如果activity的实现类也在这个package下,则android:name为实现的类名,这个类名前加不加点都没有关系,如果activity的实现类是在默认包的子包里面,则这个“.”是必须有的,比如activity的实现是com.android.sample.app.DialogActivity,则android:name必须写成.app.DialogActivity或者com.android.sample.app.DialogActivity。如果只写app.DialogActivity,则会报错。

    关于Settings$WirelessSettingsActivity 中间这个$符号什么意思
    这是在xml中声明Activity时候出现的 Settings$WirelessSettingsActivity 有setting这个包 但是setting下木有WirelessSettingsActivity
    Settings$WirelessSettingsActivity 中间这个$符号,表明是WirelessSettingsActivity是Settings类的内部类

    Project.properties:工程属性文件配置

  • 相关阅读:
    FastDFS迁移步骤
    Centos7 单节点安装 FastDFS + FastDHT服务
    CentOS 7.0 上安装和配置 VNC 服务器
    Ubuntu 18.04 安装 Xfce桌面和VNC的方法
    Ubuntu 16.04设置root用户登录图形界面
    Windows批量查找文件
    WIN10打开网络共享文件夹提示0x80004005怎么解决?(转载)
    ack 工具
    win7/win10 未分配磁盘怎样创建扩展分区 也就是逻辑分区(转截)
    [bzoj4842][bzoj1283][Neerc2016]Delight for a Cat/序列_线性规划_费用流
  • 原文地址:https://www.cnblogs.com/holens/p/3781866.html
Copyright © 2011-2022 走看看