一---Android-SDK系列文章(6) ---JAVA 程序&& android应用程序(main函数)
2015-06-09 16:13
579 查看
refer: http://mobile.51cto.com/abased-377328.htm /article/1363552.html
一、java 应用程序 与android 应用程序
1.java 应用程序
(1)含main的可以直接编译成为可执行程序
(2)不含main的可以供其他应用程序调用(通过package的方式)
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的方法。
一、java 应用程序 与android 应用程序
1.java 应用程序
(1)含main的可以直接编译成为可执行程序
<span style="font-size:18px;">//src/Test.java public 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.java class 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 通话:后台通话过程中锁屏解锁,发现听筒内存在锁屏提示音
- Android学习 - 如何结束进程
- 做Android设备的4条道路,为什么都不适合微软?!
- Android学习 1 -构建运行环境
- Android应用间跳转
- ListView setSelection 无效问题
- Android 蓝牙移植笔记
- Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- android学习资源
- Android调用font-awesome字体图标
- Android数据存储——SQLite
- android 之 未知错误 处理问题
- android-进阶(2)-JSON的一些理解
- Android走向闭源,化外之地中国何去何从?
- android寻找最适合资源过程
- Android 动态库死机调试方法
- android开发连接wifi addNetwork 返回-1
- Android监听短信到来并自动填充到输入框中
- 基于netty 的android Socket 聊天室客户端
- android 退出程序