我正在为我们的应用程序提供 Android Beam 支持。但是因为我们仍然支持 2.2 *咳咳死 froyo,死姜饼,咳嗽* 我已经将类中的所有 NFC 代码NfcHandler
与 TargetApi 注释一起打包以避免像这样的 lint 警告:
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public class NfcHandler implements NfcAdapter.CreateNdefMessageCallback
然后MainActivity
在onCreate
我构建对象的过程中,如有必要,如下所示:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
nfcHandler = new NfcHandler(this);
在构造函数中,它完成了所有必要的 NFC 工作,稍后在代码中if( nfcHandler != null )
我将意图传递给它,因此它可以检查它是否正在接收光束。
一切都很好,而且大部分时间都有效。但在极少数情况下,Gingerbread 设备会崩溃:
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
会删除它。
所以问题是:
- 实际发生了什么,为什么我只是偶尔而不是每次都发生这种崩溃?