有時候代碼中調用的一些api函數對api版本有要求,好比ListView的smoothScrollToPosition函數,該函數要求android api版本在8或者以上才能夠使用,即要求用戶的手機必須是android2.2及其以上的才行。有些同窗可能會這麼作java
try { final int mVersionCode = Integer.valueOf(android.os.Build.VERSION.SDK); Logger.d(TAG, "sdk version=" + mVersionCode); } catch (Exception e) { e.printStackTrace(); } if(mVersionCode >= 8){ mListView.smoothScrollToPosition(position);}
實際上,上述作法是不行的,在android1.6上就會崩潰,錯誤爲找不到smoothScrollToPosition函數,確切來講,在android2.0如下都會崩潰,緣由爲java虛擬機啓動程序的時候就會檢查類信息。android
解決辦法以下(由於android的內部類是運行的時候動態加載的)api
if(mVersionCode >= 8){ new Object() { public void smoothScrollToPosition(ListView mListView, int position) { mListView.smoothScrollToPosition(position); } }.smoothScrollToPosition(mListView,position); }