有沒有安全的方法來處理super.onCreate(savedInstanceState)
引發的異常?如何處理super.onCreate中的異常?
我的用戶非常少數達不到這個錯誤
java.lang.NoClassDefFoundError - android.security.MessageDigest
原因在this question討論,但基本上onCreate
爲MapActivity類都可以拋出NoClassDefFoundError
。我擔心事先檢測到這種情況可能不是未來的證明。
我認爲我的班級(它擴展了MapActivity)的最安全的解決方案是趕上NoClassDefFoundError
並改爲啓動Google地圖的網址,例如,
try {
super.onCreate(savedInstanceState);
} catch (NoClassDefFoundError err) {
StringBuilder url = new StringBuilder(
"http://maps.google.com/maps?q=").append(latitude)
.append(",").append(longitude).append("&z=18");
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url.toString()));
startActivity(i);
finish();
return;
}
不過,我擔心我的代碼將與SuperNotCalledException
當NoClassDefFoundError
發生崩潰。
有沒有一種安全的方式來處理super.onCreate調用中的異常/錯誤?
「這個新API向後兼容,我認爲」 - 抱歉,但沒有。 – CommonsWare 2013-03-14 23:19:25
我不認爲檢測MapActivity會有幫助 - 設備具有MapActivity類,但在實例化時會引發錯誤。我想我需要檢測已安裝的Google地圖應用的版本,並檢查它是否適用於此設備(例如,通過檢查相應的MessageDigest類)。 – 2013-03-14 23:45:44