一---Android-SDK系列文章(6) ---JAVA 程序&& android应用程序(main函数)
来源:互联网 发布:网络枪战游戏排名 编辑:程序博客网 时间:2024/06/06 21:45
refer: http://mobile.51cto.com/abased-377328.htm http://blog.csdn.net/luoshengyang/article/details/6685853
一、java 应用程序 与android 应用程序
1.java 应用程序
(1)含main的可以直接编译成为可执行程序
<span style="font-size:18px;">//src/Test.javapublic class Test { public static void main(String[] args){ A a = new A(); a.setValue(10); System.out.println(a.getValue()); }}</span>
(2)不含main的可以供其他应用程序调用(通过package的方式)
<span style="font-size:18px;">//src/A.javaclass A{ private int value; public A(){ value = 0; } public void setValue(int var){ value = var; } public int getValue(){ return value; }}</span>
2.android 应用程序--apk
(1)应用程序基础
Android 应用程序是用Java编程语言写的。编译后的Java代码——包括应用程序要求的任何数据和资源文件,通过aapt工具捆绑成一个Android包,归档 文件以.apk为后缀。这个文件是分发应用程序和安装到移动设备的中介或工具,用户下载这个文件到他们的设备上。一个.apk文件中的所有代码被认为是一 个应用程序。
在许多方面,每个Android应用程序生活在它自己的世界:
- 默认情况下,每一个应用程序运行在它自己的Linux进程中。当应用程序中的任何代码需要执行时,Android将启动进程;当它不在需要和系统资源被其他应用程序请求时,Android将关闭进程。
- 每个应用程序都有他自己的Java虚拟机(VM),因此应用程序代码独立于其他所有应用程序的代码运行。
- 默认情况下,每个应用程序分配一个唯一的Linux用户的ID。权限设置为每个应用程序的文件仅对用户和应用程序本身可见——虽然也有一些方法可以暴露他们给其他应用程序。有可能设置两个应用程序共享一个用户ID,这种情况下,他们能够看到对方的文件。为了节省系统 资源,具有相同ID的应用程序也可以安排在同一个Linux进程中,共享同一个VM。
(2)ActivityManagerService
在Android应用程序框架层中,是由ActivityManagerService组件负责为Android应用程序创建新的进程的,它本来也是运行在一个独立的进程之中,不过这个进程是在系统启动的过程中创建的。
ActivityManagerService 组件一般会在什么情况下会为应用程序创建一个新的进程呢?当系统决定要在一个新的进程中启动一个Activity或者Service时,它就会创建一个新的进程了,然后在这个新的进程中启动这个Activity或者Service,具体可以参考Android系统在新进程中启动自定义服务过程(startService)的原理分析、Android应用程序启动过程源代码分析和Android应用程序在新的进程中启动新的Activity的方法和过程分析这三篇文章。
从而 可以进一步推知,android的apk的入口是Application下的onCreate。严格来说,Android 应用程序的入口是 ActivityThread 的main函数。
(3)应用程序组件
不像其他大多数系统的应用程序,Android应用程序没有一个单一的入口点(例如,没有main()函数)。相反,系统能够实例化和运行需要几个必要的组 件。有四种类型的组件:
- 活动(Activities)
- 服务(Services)
- 广播接收者(Broadcast receivers)
- 内容提供者(Content providers)
然而,并不是所有的应用程序都必须包含上面的四个部分,你的应用程序可以由上面的一个或几个来 组建。当你决定使用以上哪些组件来构建Android应用程序时,你应该将它们列在AndroidManifest.xml文件中,在这个文件中你可以声 明应用程序组件以及它们的特性和要求。
在Android系统中,Activity和Service是应用程序的核心组件,它们以松藕合的方式组合在一起构成了一个完整的应用程序,这得益于应用程序框架层提供了一套完整的机制来协助应用程序启动这些Activity和Service,以及提供Binder机制帮助它们相互间进行通信。
在Android系统中,有两种操作会引发Activity的启动:一种是用户点击应用程序图标时,Launcher会为我们启动应用程序的主Activity;应用程序的默认Activity启动起来后,它又可以在内部通过调用startActvity接口启动新的Activity,依此类推,每一个Activity都可以在内部启动新的Activity。通过这种连锁反应,按需启动Activity,从而完成应用程序的功能。 这里,我们通过一个具体的例子来说明如何启动Android应用程序的Activity。Activity的启动方式有两种,一种是显式的,一种是隐式的,隐式启动可以使得Activity之间的藕合性更加松散,因此,这里只关注隐式启动Activity的方法。
- 一---Android-SDK系列文章(6) ---JAVA 程序&& android应用程序(main函数)
- 一---Android-SDK系列文章(3) ---java(自己动手编译、运行Java程序)
- 一---Android-SDK系列文章(1)
- 一---Android-SDK系列文章(2) ---java(class,package,import)
- 一---Android-SDK系列文章(5) ---android之系统属性的(获取&&设置)
- 一---Android-SDK系列文章(4) ---android四大组件之Activity
- 【Android SDK程序逆向分析与破解系列】之二:Android可执行程序DEX分析(一)
- python学习系列(一)--- main函数
- Java应用程序编程(Android SDK上手必备)
- Android应用程序换肤实现系列(一)
- Android系列(一)
- Android应用程序基础(一)
- Android应用程序组件(一)
- Android应用程序资源(一)
- Android应用程序用户界面(一)
- Android SDK开发指南(翻译)系列一:最佳实践(一)-- 性能设计
- Android SDK上手指南:Java应用程序编程
- 【Android SDK程序逆向分析与破解系列】之三:Android可执行程序DEX分析(二)
- unlink remove
- NDK介绍
- 2015.6.9日 电话面试(亚信科技)
- 相对路径、绝对路径、部署路径(html/css/servlet/jsp)
- 线程组
- 一---Android-SDK系列文章(6) ---JAVA 程序&& android应用程序(main函数)
- android中image文件的压缩与解压缩
- C语言 链表反向打印与反转
- mysql中You can't specify target table for update in FROM clause错误
- java 根据经纬度获取地址
- Android的PopupWindow使用android学习之旅(四十三)
- 流程自动化布局
- 在Activity中使用Fragment需要先集成FragmentActivity
- mysql查询数据库含有的表数量