instanceof关键字是否会对Android平台产生相对较重的影响(更具体地说是运行Dalvik VM的手机?
我正在学习Android并且需要日期/时间.我被同事推荐为Joda-time,这似乎正是我需要取得的进展.不幸的是,我无法让它工作.
我正在使用intellij,这是Android 2.2.
我采取的步骤:
然后我得到这个错误:
警告:忽略没有关联的EnclosingMethod属性的匿名内部类的InnerClasses属性.(这个类可能是由一个破碎的编译器产生的.)
我不知道从哪里开始.帮助将不胜感激!
我试图在Android应用程序中使用第三方jar文件.我已经能够使用jar文件中的一些类了.但是,其中一个类引用了dalvik vm似乎不支持的某些Java类.这些是我在LogCat中看到的一些错误:
Unable to find class referenced in signature java/beans/PropertyDescriptor.
Unable to resolve virtual method java/beans/PropertyDescriptor.getName().
Unable to resolve virtual method java/beans/PropertyDescriptor.getReadMethod().
Unable to resolve static method java/beans/Introspector.getBeanInfo().
Unable to resolve exception class java/beans/IntrospectionException.
Run Code Online (Sandbox Code Playgroud)
似乎dalvik不支持与内省和反射相关的Java类.我想找出两件事.这是否计划在不久的将来在达尔维克支持这一点?其次,是否有人建议可以解决这个问题?
当我在Eclipse中创建一个新项目时,会立即发生这种情况.
我在项目中只有1个jar文件,我试图将其删除,然后重复添加几次,并在此之后清理项目.
我更新了ProGuard(我认为),下载了新版本,并将lib文件夹替换为此处的线程说.
我的default.properties文件如下所示:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-8
Run Code Online (Sandbox Code Playgroud)
因此无法评论ProGuard的任何内容,这也是另一个线程中提到的.我觉得我已经尝试了一切,但仍然存在这个错误.如果我去,我注意到的一件事:
window -> preferences -> android -> build.并取消选中"当外部jar包含本机库时强制错误".然后我得到:"无法解决R" …
在为Android开发ORM框架时,我遇到了一个有趣的问题.我正在使用一个名为dexmaker的库来进行字节码操作,这使我能够为持久对象创建代理以实现延迟加载.
代理实例具有关联InvocationHandler,使得当在代理上调用方法时,在该方法上调用该invoke方法InvocationHandler,然后在假定它被延迟加载的情况下调用代理对象的相应方法.没有什么太令人惊讶的 - 它就像Java的Proxy类,但允许我代理实际的类而不是接口(参见dexmaker的ProxyBuilder).
成为问题的部分是我也使用反射从持久对象中检索字段值 - 现在我已经引入了延迟加载 - 代理.这是我目前正在做的事情:
for (Field f : getPersistentFields(model.getClass()) {
...
Object val = f.get(model); // model is either a persistent object or a proxy for one
mapField(f, val, map);
}
Run Code Online (Sandbox Code Playgroud)
这当然适用于常规模型实例,但对于代理实例,f.get(model)不检索代理对象的字段值.相反,它返回类的构造函数中指定的默认值.代理的字段上的访问权限显然没有被截获.
我的问题是:有什么方法可以拦截通过反射对代理的成员变量进行访问?如果没有,我如何以"类似反射"的方式检索代理字段的值?
我正在考虑的一种可能的解决方法是使用反射检索然后调用字段的getter方法,但我想知道是否有更直接的解决方案.这种解决方法,如果实际上有效,则需要对象为所有持久字段设置一个getter方法 - 从OO设计的角度来看通常应该遵循这一要求,但也会迫使更多的工作进入框架的用户.
我对任何想法持开放态度.
当我们开发Android应用程序时,我们总是从onCreate()主要活动的方法开始.很明显,在调用之前应该进行一些初始化onCreate().我的问题是:mainAndroid应用程序的入口点(或方法)是什么?Dalvik VM在一开始就调用了什么(即,当它完成自己的初始化,并且即将控制转移到应用程序时)?我在哪里可以找到这个代码main?
我对此感到非常沮丧.每个imte我尝试导出我的项目我得到错误:转换为Dalvik格式失败,错误1
我尝试了很多东西.我得到了最新的日食.改变了我的proguard文件.
只有在我将facebook 3.5.2 SDK添加到我的项目时才会出现此错误.我们在我们的库中有相同的android-support-v4.jar.我在我的应用程序中删除了一个并将其保存在facebook SDK中,但我仍然记错了.任何人都可以帮助我真的很令人沮丧......
提前致谢..
在下面的SO问题:https: //stackoverflow.com/questions/2067955/fast-bitmap-blur-for-android-sdk @zeh声称一个java模糊算法的端口到C运行速度快40倍.
鉴于大部分代码仅包含计算,并且所有分配仅在实际算法数字运算之前"一次"完成 - 任何人都可以解释为什么此代码运行速度快40倍?Dalvik JIT不应该翻译字节码并大大减少与本机编译代码速度的差距吗?
注意:我自己没有确认此算法的x40性能增益,但我遇到的所有严格的图像处理算法都使用NDK - 因此这支持NDK代码运行速度更快的概念.
Android Dalvik标准库是否具有类似于Java SE中未记录的类sun.misc.Unsafe的类,它允许直接访问内存.
为了在dalvik堆中分配内存区域,应用程序使用dlmalloc而不是普通的malloc,为什么使用dlmalloc,以及它与malloc的区别.(据我所知,为了在创建dalvik VM时分配dalvik堆,使用了malloc.)
android ×10
dalvik ×10
java ×3
performance ×2
android-ndk ×1
eclipse ×1
instanceof ×1
jit ×1
jodatime ×1
mobile ×1
proxy ×1
reflection ×1
time ×1