我包括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)'就足夠了嗎? –