据我所知,dalvik vm中的"java"在API和体系结构等方面与Java se不同.但语法始终是相同的.(如果我错了,请纠正我)
现在java 8中lambda表达式的支持即将发布,android java会跟着吗?google或aosp承诺让dalvik与java se一致吗?
更新:现在和Android 4.4 Kit Kat(API 19)一样,Java 7语法已被正式支持.来自android.com的消息来源
我知道你可以在Dalvik的VM中运行几乎所有Java ,你可以在Java的VM中运行,但是局限性不是很明显.有没有人遇到任何重大绊脚石?有没有主要图书馆有问题?任何编译为Java字节代码的语言(Scala,Jython等...)都无法正常工作?
在android中,使用静态变量是推荐的做法吗?例如,在Java中实现Singleton模式,我通常会这样做:
private static A the_instance;
public static A getInstance() {
if (the_instance == null) {
the_instance = new A();
}
return the_instance;
}
Run Code Online (Sandbox Code Playgroud)
此外,Android JVM何时清理它?
谢谢.
是为每个应用程序创建的Dalvik虚拟机实例,还是所有Android应用程序共享相同的Dalvik虚拟机实例?
我正在研究涉及大量并发编程的Android项目,我将实现一些自定义的线程间通信(java.util.concurent中的那个不适合我的目的).
并发编程一般不容易,但对Dalvik来说似乎更难.要获得正确的代码,您应该了解一些具体的事情以及Dalvik出现问题的地方.我找不到关于Dalvik VM的详细文档.大多数Android资源(甚至developer.android.com专注于平台API,并没有提供任何关于一些非平凡(或低级)事物的深层信息).
例如,Dalvik VM遵循哪个版本的Java语言规范?根据答案,volatile变量的处理是不同的,并影响使用volatile变量的任何并发代码.
已经有一些相关问题:
而fadden的一些答案非常有用,但我仍然希望对所讨论的问题有更详细和完整的理解.
所以在我感兴趣的原始问题之下(如果有必要,我将更新列表,因为之前的问题的答案将到达):
volatile变量语义的支持有多完整?在Android中的双重检查锁定中,fadden提供以下注释:
对.通过添加"volatile"关键字,这将适用于单处理器(所有Android版本)和SMP(3.0"蜂窝"及更高版本)
这是否意味着拥有双核CPU但只有Android 2.3的三星Galaxy SII可能会错误地执行并发代码?(当然Galaxy只是一个例子,关于任何具有Android 3.0前平台的多核设备的问题)
在Is Dalvik的内存模型中与Java相同吗?该法登提供下列句子的答案:
目前没有发布的Dalvik版本与JSR-133完全正确
这是否意味着任何现有的正确并发Java代码在发布此评论的任何Android版本上可能无法正常工作?
@gnat发表评论:
@Alexey Dalvik不符合任何JLS版本,因为一致性要求通过JCK,这不是Dalvik的选项.这是否意味着您甚至无法应用标准Java编译器,因为它符合标准规范?那有关系吗?如果有,怎么样?
好吧,我的问题有些含糊不清.我实际上的意思是JLS不仅是Java编译器实现的规则,而且是任何JVM实现的隐含指南.实际上,例如,JLS声明某些类型的读写是原子操作.编译器编写器不是很有趣,因为读/写只是转换成单个操作码.但是对于任何应该正确实现这些操作码的JVM实现来说都是必不可少的.现在你应该看看我在说什么.虽然Dalvik接受并执行使用标准Java编译器编译的程序,但没有任何保证 …
我试图了解Android如何启动应用程序.问题是Zygote如何(以及为什么)分叉新的Dalvik VM?我不明白为什么不能在同一个Dalvik VM中运行多个应用程序.
Android ART运行时是否与Dalvik具有相同的方法限制限制?目前,主要dex文件中有64k方法的限制
Google是从移动Dalvik到ART(Android的运行系统).
我试图了解它是如何改善性能的.
我找到的最好的解释是下面的图像:

其中一个已改变的主要成分是dexopt对dex2oat.
由于我对这些没有太多了解,有谁可以解释这些差异以及这将如何改善性能?
由于Android目前不支持java7,我发现自己想知道如果他们正在努力支持它,他们是否已发表官方评论?
本问题已移至https://softwarerecs.stackexchange.com/questions/27841/plugins-architecture-for-an-android-app
我想为开源应用程序实现一个插件系统,因为它已经变得非常庞大,只有少数用户需要许多功能.发布不同的应用程序并不是一个好的解决方案,因为userA需要feature7和feature24而userB需要feature39和feature24.
我在哪里可以找到插件架构的好例子?
这是我想要一个插件能够做到的:
例如,其中一个插件必须在特定屏幕上添加一个按钮,单击此按钮会增加应用程序数据库中的值.据我所知,这对内容提供商和意图不可行.
我想避免让核心应用程序的代码复杂化,到处都是大量的钩子.
插件的形式可以是SD卡上的文件,应用程序或其他任何内容.