我包括Android Beam支持我们的应用程序。但是,因为我们仍然支持2.2 * 咳嗽模具升级Froyo,姜饼死亡,咳嗽 *我已经挤满所有的NFC代码的类NfcHandler
与TargetApi注解,以避免lint警告这样的:Android TargetApi注释和即时编译器
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public class NfcHandler implements NfcAdapter.CreateNdefMessageCallback
然后在onCreate
的MainActivity
我打造的对象,如果需要的是这样的:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
nfcHandler = new NfcHandler(this);
在它所有必要的NFC的东西,在后面的代码
if(nfcHandler != null)
我的意图传递给它的构造
,所以它可以检查如果它收到g光束。
所有的优秀和伟大,它大多数时间工作。 但在很少的场合姜饼设备与崩溃:
10-22 16:08:01.022 1734年至1734年/ com.baseapp.eyeem.p0 E/dalvikvm:找不到类“com.baseapp.eyeem。 os.NfcHandler',引用方法com.foo.MainActivity.onCreate
我的意思是,类确实存在,它只是它的空对象。
由于我们在XXHDPI设备上的应用程序是23MB,并且在ldpi Gingerbread 5mb上,我可以看到即时编译器(JIT)或其他运行时优化正在删除不必要的资源。我想知道它是否可能与我的NfcHandler类相同,因为它注释为ICE_CREAM_SANDWICH
它会将其删除。
所以,问题是:
- 发生了什么实际发生的情况和为什么我在一个同时获得此崩溃只有一次,而不是每一次?
引用它的其他代码只是处理活动意图的方法中的一个if(nfcHandler!= null && nfcHandler.handleIntent(intent))return;有问题的设备是我们的一款昵称为“shitty device”的测试设备,它是2.3.5版的HTC Wildfire S。我会尝试在内部对象中打包'NfcAdapter.CreateNdefMessageCallback',并回报 – Budius
,好像它已经做到了。由于该对象正在实现一个接口,因此JVM不知道它一直在抱怨并偶尔崩溃。 Thnks! – Budius
@Budius:用'if(Build.VERSION.SDK_INT> = Build.VERSION_CODES.ICE_CREAM_SANDWICH)'来保护'nfcHandler.handleIntent(intent)'就足够了吗? –