学习android笔记

来源:互联网 发布:php文件管理系统 源码 编辑:程序博客网 时间:2024/05/14 18:38

程序基础

  1.android程序被打包为一个.apk文件。

  2.一旦被安装到一个设备上,每个android程序都在一个自己的安全沙箱中。

    android操作系统是多用户linux系统,每个程序都是一个不同的用户。

    默认情况下,系统会给每个程序分配一个唯一的linux用户id,并设置程序的所有文件的权限,使得只有这个用户ID的程序可以访问它们。

    每个程序有自己的VM,所以一个程序的代码的运行与其他程序代码是被隔离开的。

    默认情况下,每个程序跑在其自己的linux进程中。在其任何一个组件需要被执行的时候,android会开启这个进程,并在不再需要此进程或者系统需要从其他程序中取回内存时关闭此进程。

  3.android系统实现最少权限原则,每个程序在默认情况下都只能访问它必须的资源。

  4.但程序之间也可以共享数据:两个进程可以共享相同的Linux用户ID;程序可以要求访问设备数据。

 

程序组件

  1.有四种不同类型的组件:

    activity代表一个有用户界面的屏幕。都是Activity的子类。

    service是一个跑在后台的组件,执行长时间操作或为远程进程工作。都是Service的子类。

    content provider管理一组共享的程序数据。数据可以被存储到文件系统中,SQLite数据库中,web上或者任何你的程序可以访问到的其他持久存储位置。其他程序可以通过content provider访问甚至修改这些数据。content provider在读写本程序私有非共享数据方面也非常有用。都是ContentProvider的子类。

    broadcast receivers负责系统级别的广播,如屏幕关闭消息,电池电力不足消息等。程序也可以发起广播。broadcast receivers没有用户界面,但可以创建状态条。都是BroadcastReceiver的子类。

  2.android系统设计的一个独特的方面是任何程序都可以开启另一个程序的组件。你需要向系统传递一个要开启特定组件的intent,系统会为你开启。

开启组件

  1.四种组件中,activities、services和broadcast receivers可以被称为intent的异步消息激活。

  2.一个intent使用一个Intent对象创建。

  3.如果想启动一个activity或者给一个activity分配一个新任务去做,可以给startActivity()或者startActivityForResult()传递一个Intent。如果想启动一个service可以给startService()传一个Intent。也可以通过给bindService()传递一个Intent来绑定到一个service。可以通过给sendBroadcast()、sendOrderedBroadcast()或sendStickyBroadcast()传递一个Intent来开始一个广播。可以在一个ContentResolver上调用query()来在content provider上进行查询。

 

清单文件

  1.如果一个android系统要开启一个程序组件,系统必须通过读取AndroidManifest.xml文件知道这个组件存在。你的程序必须在这个文件中声明所有的组件。

 

声明组件

  1.<application> <activity> <service> <receiver> <provider>

 

声明组件能力

  1.intent真正的强大在于其intent actions,使用intent actions,你只需要描述你需要执行什么类型的action并允许系统为你找到这样一个action并执行。

  2.系统检验组件是否满足一个intent的需求就是通过比较intent和由清单文件提供的其他程序的intent filters。

  3.<intent-filter>

 

声明程序要求

  1.你应该明确地在清单文件中写明对设备和软件的需求。

  2.屏幕尺寸和密度<supports-screens>、输入配置<uses-configuration>、设备属性<uses-feature>、系统版本<uses-sdk>。

 

程序资源

  1.qualifiers用来更换资源。