6.5 为什么Android用Java不用c实现?

  C/C++过于底层,开发者要花很多的经历对C/C++的语言研究清楚,例如C/C++的内存机制,如果稍不注意,就会忘了开启或者释放。而Java的GC会自动处理这些,省去了很多的时间让开发者专注于自己的业务。所以才会从C/C++的底层慢慢向上变成了JAVA的开发语言,该层通过JNI和核心运行库层进行交互。其实这些也是Java能发展这么迅速的原因,现象对象语言的优势。不用太关注内存,才有时间去创造新的事物。举例:

  • Activity Manager:用来管理应用程序生命周期并提供常用的导航回退功能。
  • Window Manager:提供一些我们访问手机屏幕的方法。屏幕的透明度、亮度、背景。
  • Content Providers:使得应用程序可以访问其他应用程序的数据(如联系人数据库)或者共享它们自己的数据。
  • View System:可以用来构建应用程序, 它包括列表,网格,文本框,按钮, 甚至可嵌入的web浏览器。
  • Notification Manager:使得应用程序可以在状态栏中显示自定义的提示信息。
  • Package Manager:提供对系统的安装包的访问。包括安装、卸载应用,查询权限和Application相关信息等。
  • Telephony Manager:主要提供了用于访问手机通讯相关的状态和信息的方法,查询电信网络状态、sim卡的信息等。
  • Resource Manager:提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
  • Location Manager:提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。
时间: 2024-10-19 22:34:05

6.5 为什么Android用Java不用c实现?的相关文章

Android(或者Java)通过HttpUrlConnection向SpringMVC请求数据(数据绑定)

问题描述 当我们使用SpringMVC作为服务端的框架时,有时不仅仅要应对web前端(jsp.javascript.Jquery等)的访问请求,有时还可能需要响应Android和JavaSE(桌面应用)这些客户端的请求,因此,除了web使用form表单或者ajax作为客户端获取Controller响应之外,纯Java语言向SpringMVC的Controller提供参数和请求结果也是必须要实现的.web前端使用form和ajax来获取Controller响应在本篇博客暂不深究,本篇博课着力于实现

[转载] 深入理解Android之Java虚拟机Dalvik

本文转载自: http://blog.csdn.net/innost/article/details/50377905 一.背景 这个选题很大,但并不是一开始就有这么高大上的追求.最初之时,只是源于对Xposed的好奇.Xposed几乎是定制ROM的神器软件技术架构或者说方法了.它到底是怎么实现呢?我本意就是想搞明白Xposed的实现原理,但随着代码研究的深入,我发现如果不了解虚拟机的实现,而仅简单停留在Xposed的调用流程之上,那真是对Xposed最大的不敬了.另外,歪果仁为什么能写出Xpo

一个现代化的JSON库Moshi针对Android和Java

Moshi 是一个现代化的JSON库针对Android和Java.它可以很容易地解析JSON成Java对象: String json = ...; Moshi moshi = new Moshi.Builder().build(); JsonAdapter<BlackjackHand> jsonAdapter = moshi.adapter(BlackjackHand.class); BlackjackHand blackjackHand = jsonAdapter.fromJson(json

深入理解Android之Java Security第二部分(Final)

深入理解Android之Java Security(第二部分,最后) 代码路径: Security.java:libcore/lunl/src/main/java/java/security/ TrustedCertificateStore.java:libcore /crypto/src/main/java/org/conscrypt/ CertInstallerMain:package/apps/CertInstaller/src/com/android/certinstaller/ Cre

关于android R.java文件无法创建的问题

R.java文件无法创建的原因网上有很多说法普遍是以下两种: 1. xml文件有错误: 解决方法就是找到哪个xml有错然后把错误修复就OK了. 2.编码问题 这时候只要把xml文件的编码改成utf8就能解决问题. 然而对于查找xml文件错误我们常常依赖android的自带工具进行检测,但是只要是人写得程序必然会有一些bug, 当检测工具出现bug后有可能导致错误很难定位. 而在xml文件校验方面,里面就有一个很坑的bug: 当menu目录下的文件有错时导致r文件无法生成时,可能不会给出任何有关m

Android(java)学习笔记257:JNI之NDK开发步骤(helloword案例)

1.下面通过一个HelloWorld案例来说明一下JNI利用NDK开发过程(步骤) 分析:我们在Win7系统下编译的C语言代码,我们知道C语言依赖操作系统,不能跨平台,所以我们要通过NDK工具把在Win7系统下编写的C代码,转化为可以在Linux(Linux2.6.6---Android内核)运行的二进制代码,最后通过JNI协议规范,Android中java代码就可以调用这个转化后的二进制代码运行. (1)在Eclipse中新建一个Android工程,命名为"HelloWorld",如

Android 和Java API的一个坑:SimpleDateFormat

今天上班遇到这么一个意料之外的异常: 出问题的代码是这样的(已去除上下文信息): Log.i(LOG_TAG, new SimpleDateFormat("YYYY-MM-dd HH:mm:ss", Locale.CHINA) .format(System.currentTimeMillis())); 反复检查,感觉没有问题,于是新建一个Java Project,直接输出同样的代码: public class Main{ public static void main(String[]

Android平台Java代码的条件编译问题

在代码的开发过程中,不管是C/C++也好,Java也罢,都要面对在平台移植的问题, 所以不可避免的要考虑条件编译的问题. 在C/C++代码的开发中,条件编译的实现很容易实现,可以分成二种:一种是在单个代码文件中通过 #ifdef ... #endif 或者 #if ... #endif 的方式选择性编译文件中的代码,另一种是在Makefile中通过宏判断来选择性编译某个文件.在Java代码的开发中,实现条件编译则没有直接对应的方法,但是仍然可以采用变通的方法来实现条件编译. 对于单个文件内的的代

针对Android平台我们需要学习如何在Unity中调用Android的JAVA代码。

Unity for Android 比较特殊,Unity for IOS 打包是将XCODE工程直接交给开发者,开发者可以在工程的基础上继续添加新的视图,最后由开发者自行打包生成IPA包,发布程序.而Unity for Android打包直接生成APK包,等于说源代码开发者是看不到的,但是Unity的自身确实有些局限,针对Android平台我们需要学习如何在Unity中调用Android的JAVA代码.本章我们的目标是使用Unity的脚本打开Activity.首先我们创建一个普通的Android