zoukankan      html  css  js  c++  java
  • Android基础知识、四大组件(转)

    Android应用程序使用java语言编写的。Android SDK工具将所有的数据和资源文件以及代码进行编译,打包称为一个apk文件。一个apk文件中的所有代码被认为是一个应用,android系统的设备使用这个apk文件来安装应用。

        
        一旦在设备上安装了,每个android应用都生存在自己的安全沙盒内部:
        ①android操作系统是一个多用户的linux系统,在这之中每一个应用是一个不同的用户
        ②默认情况系,系统给每一个应用分配一个不相同的user id,这个user id只被系统使用,对于应用来说是不知道的。系统给应用中的所有文件都设置了permission,因此只有分配给这个应用的user id才能访问它们。
        ③每个进程都有他自己的虚拟机,因此应用中的代码是和其他应用中的代码相隔离的。
        ④默认情况下,每个应用都在自己的linux进程中运行。当应用中的任何一个组件需要执行的时候,android开启这个进程;当不需要运行或者系统需要为其他进程分配内存的时候会关闭进程。
     
        在这种情况下,android系统实现了the principle of least privilege,也就是说每个应用默认情况下之恩那个访问到它需要访问的组件。这样就生成了一个安全的环境:每个应用不能访问到它没有访问权限的系统的其他部分。
     
        但是,还是有方法在应用之间共享数据的:
        ①有这样一种可能:两个应用共享相同的linux user id,在这样的情况下,他们能够访问到其他程序的文件。为了节省系统资源,有共享id的应用可以在同一个linux进程中运行,共享同一个虚拟机。
        ②一个应用可以发起请求访问权限来获取数据,比如用户的联系人,短消息等。所有的应用permission必须在用户安装的时候被授予。
     
        android四大组件:
        ①Antivities,代表了用于界面的一屏。一个Activity需要继承Activity类
        ②Services,在后台运行的一个组件,能够执行长时间运行的操作或者为远程的进程执行操作。Service没有界面。一个Service需要继承Service类。
        ③ContentProviders,一个ContentProvider管理着应用的一组可以共享的数据。我们可以把数据存储在我们应用可以访问到的任何地方,比如文件系统,SQLite数据库,网络上或者任何其他的持久存储地方。通过ContentProvider,其他的应用可以访问甚至修改数据,前提是contentProvider允许他这样做。对于私有应用的数据的读和写来说ContentProvider也是很有用处的。一个ContentProvider必须要实现一个ContentProvider类,而且应用实现一组标准的API使得其他的程序能够执行事务。
        ④BroadcastReceivers,是一个相应系统广播消息的组件。许多广播是由系统产生的,比如电池电量过低;应用也可以发广播,比如让其他应用指导已经下载了一些数据到设备上,大家可以使用了。尽管broadcast receiver没有界面,他们也可以产生一个状态栏提醒来告知用户。一个broadcast receiver应该继承BroadcastReceiver,而每一个广播是通过一个Intent对象来传递的。
     
  • 相关阅读:
    Codeforces 992C(数学)
    Codeforces 990C (思维)
    Codeforces 989C (构造)
    POJ 1511 Invitation Cards(链式前向星,dij,反向建边)
    Codeforces 1335E2 Three Blocks Palindrome (hard version)(暴力)
    POJ 3273 Monthly Expense(二分)
    POJ 2566 Bound Found(尺取前缀和)
    POJ 1321 棋盘问题(dfs)
    HDU 1506 Largest Rectangle in a Histogram(单调栈)
    POJ 2823 Sliding Window(单调队列)
  • 原文地址:https://www.cnblogs.com/softidea/p/3958942.html
Copyright © 2011-2022 走看看