2012-02-16 6 views
3

私のAndroidアプリケーションでは、インターネットからいくつかの画像とデータを展開可能なリストビューに読み込んでいます。向きの変更は次のように処理しました。Android画面の向きが遅いですか?

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

} 

()

 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

+0

はい、私は上のようにonRetainNonConfigurationInstance()メソッドとgetLastNonConfigurationInstance()メソッドを使用していることに気付きました。それは適切に動作していますが、非常に遅いので、これを効率的に行うための代替方法を知る必要があります。 –

+0

は** isOrentationChnged **静的変数ですか?オリエンテーションが変更されたときにLongRunning()。execute()が呼び出されていないことを確認しますか? –

答えて

2

最後に、私はアクティビティの向きの変化をスピードアップする簡単な方法を得ました。

IDEA:

一人ひとりの向きの変化が活動にあなたがあなたのアプリケーションのマニフェストファイルにアクティビティタグに次のコード行を追加することで、活動のレクリエーションを避けることができ、この解決策を再作成します。

android:configChanges="orientation|keyboardHidden|screenSize" 

上記の行は、オリエンテーションが変更された後のアクティビティの再作成を避けるため、オリエンテーションの変更にアクティビティが敏感になります。

0

isOrentationChngedが静的​​に設定されていない限り、あなたのアクティビティが再作成されると、常に偽になります。

あなたは本当に変数はとにかくただのonCreateでこれを行うことを必要としない:

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

この方法は活動がそうでなければlongrunning操作が実行されます、そして、あなたのデータが使用され、再作成されているかどうか。

ところで、私はあなたのアダプタコンストラクタでarrGroupelementsを使用していません。