2012-02-16 36 views
3

在我的Android應用程序中,我已經從互聯網加載了一些圖像和數據到可擴展列表視圖中。並且我已經處理了如下的方向更改。Android屏幕方向是否緩慢?

@Override 
public Object onRetainNonConfigurationInstance() { 
    isOrentationChnged=true; 
    final Object data = arrGroupelements; 
    return data; 

} 
在我的onCreate()

 if(!isOrentationChnged){ 
    new LongRunning().execute(); 

}else{ 

     if((String[][])getLastNonConfigurationInstance()==null){ 
     new LongRunning().execute(); 
     }else{ 
    arrGroupelements= (String[][]) getLastNonConfigurationInstance(); 
    expList.setAdapter(new ExpAdapter(cont)); 
     } 
} 

isOrentationChnged=false; 

LongRunning是已經習慣了從網上得到的數據AsynacTask和它加載之前加載的方向更改後的數據(不包括從互聯網上獲取新數據再次),但它是非常緩慢。是否有任何其他方式有效地做到這一點?

+0

你見過[this](http://developer.android.com/resources/articles/faster-screen-orientation-change.html)嗎? – Ghost 2012-02-16 10:01:44

+0

是的,我已經看到,根據我已經使用onRetainNonConfigurationInstance()和getLastNonConfigurationInstance()方法如上。它工作正常,但速度很慢,所以我必須知道另一種方法來有效地做到這一點。 – 2012-02-16 10:18:54

+0

是** isOrentationChnged **一個靜態變量?你確定LongRunning()。execute()是否在方向改變時調用**而不是**? – 2012-03-22 17:10:59

回答

2

最後,我得到了簡單的方法來加速活動中的方向變化。

IDEA:

每個方向的變化將重新創建活動的解決方案,這一點,你可以通過添加如下代碼行活動代碼應用程序的清單文件避免活動娛樂。

android:configChanges="orientation|keyboardHidden|screenSize" 

上面的一行避免了方向改變後的活動重新創建,所以你的活動對方向改變的反應會更加敏感。

0

按照David的說法,除非isOrentationChnged設置爲靜態,當您重新創建活動時它將始終爲false。

你並不真的需要一個變量反正只是這樣做在的onCreate:如果

arrGroupelements = (String[][]) getLastNonConfigurationInstance(); 
if (null==arrGroupelements){ 
    new LongRunning().execute(); 
} else {  
    expList.setAdapter(new ExpAdapter(cont)); 
} 

這種方式被重新創建活動,則您的數據將被使用,否則longrunning操作運行。

順便說一句,我沒有看到你在你的Adapter構造函數中使用arrGroupelements。