android調用高版本api函數的兼容性問題

有時候代碼中調用的一些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);
			    }
相關文章
相關標籤/搜索