关于Android编程的快速问题

时间:2011-02-13 21:39:13

标签: android android-emulator

本身并不是一个直接的源代码问题....但我正在考虑做一些随意的Android编程,没有什么重。

但它似乎使用了很多XML和Java ......我想知道的是,为什么android主要是用C和XML(以及C ++和Java)编写的,它与它密切相关Linux OS ......但为什么在android Java中编程的“主要”语言呢?

当然是出于好奇。

3 个答案:

答案 0 :(得分:1)

您称之为“主要”语言的是Java。您可以通过NDK使用C / C ++,但除非您正在做一些特殊的事情,否则您不需要它。如果您想知道何时需要使用C / C ++,请查看官方文档:

  
    

何时开发本地代码

         

NDK不会使大多数应用程序受益。作为开发人员,您需要平衡其优势与缺点;值得注意的是,使用本机代码不会导致自动性能提升,但总是会增加应用程序的复杂性。一般来说,如果它对您的应用程序至关重要,您应该只使用本机代码,而不仅仅是因为您更喜欢用C / C ++编程。

         

NDK的典型优秀候选者是独立的,CPU密集型操作,不分配大量内存,例如信号处理,物理模拟等。简单地重新编码在C中运行的方法通常不会导致大的性能提升。在检查是否应该使用本机代码进行开发时,请考虑您的要求,并查看Android框架API是否提供了所需的功能。但是,NDK可以是重用大量现有C / C ++代码的有效方法。

         

Android框架提供了两种使用本机代码的方法:

         
        
  • 使用Android框架编写应用程序,并使用JNI访问Android NDK提供的API。此技术允许您利用Android框架的便利性,但仍允许您在必要时编写本机代码。您可以在运行Android 1.5或更高版本的设备上通过JNI安装使用本机代码的应用程序。

  •     
  • 编写本机活动,允许您在本机代码中实现生命周期回调。 Android SDK提供了NativeActivity类,它是一个便利类,它通知您的本机代码任何活动生命周期回调(onCreate(),onPause(),onResume()等)。您可以在本机代码中实现回调,以便在发生这些事件时对其进行处理。使用本机活动的应用程序必须在Android 2.3(API级别9)或

  • 上运行     
         

您无法在本机访问服务和内容提供程序等功能,因此,如果您要使用它们或任何其他框架API,您仍然可以编写JNI代码来执行此操作。

  

答案 1 :(得分:1)

我只是猜测,但Java比C / C ++更容易编程,所以它对新程序员更有吸引力,这也有利于平台的成功。

另一个原因可能是用java编写的应用程序在一个单独的VM中运行,因此它可以更容易地由android控制。如果某个虚拟机没有响应,那么主操作系统就可以杀死它并且手机仍在响应。

答案 2 :(得分:0)

Suaron ......从稳定性的角度来看,Java应用程序应该不太可能取消设备。所以Java || C#|| C ++ / CLI比C ++和C vs Assembly更安全。为此,API使用Java,因此大多数应用程序都是Java。

另一方面,C / C ++更接近硬件,更适合编写与硬件交互的库。使用C ++进行拍摄会更容易。

JAL