2011-12-20 3 views
0

Webからいくつかの情報をダウンロードしている間、アクティビティを表示します。 情報のダウンロードが完了したら、別のアクティビティを表示します。AsyncTaskを使用しているときに結果が返るのを待っている間にアクティビティを表示します。

これは私のコードです:

public class SplashScreenActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash_screen_layout); 

    load(); 
} 

private void load() { 
    try { 
     ArrayList data= new LoadPage().execute().get(); 
     if(data!= null) { 
      startActivity(new Intent(getApplicationContext(), MainActivity.class)); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

かなりシンプルですが、私がいる問題は、この活動は、画面(UI)に示されていないということです。情報はダウンロードされ、MainActivityは予期されたとおりに開始されますが、このアクティビティ(SplashScreenActivity)はユーザーに決して表示されません。

MainActivityの中に入ると、「戻る」ボタンを押すと、SplashScreenActivityが表示されます。

私はUIスレッドと、getメソッドをnew LoadPage().execute().get();に呼び出して、結果が来るのを待っていると考えています。

どうすればこの問題を解決できますか?ありがとう。

答えて

0

あなたはASyncTaskを正しく使用していません。 ASyncTaskでgetメソッドを呼び出すと、UIスレッドがブロックされます。 ASyncTaskにはアクティビティを開始するための適切な場所であるonPostExecuteメソッドが含まれています

0

SplashScreenActivityonPostExecuteメソッドを使用してみてください。

バックグラウンドにあるAsyncTaskが終了すると、結果に応じて次のアクティビティを呼び出すためのコードを書くことができるonPostExecuteメソッドに移動します。このような

何か:

protected void onPostExecute(ArrayList data) 
     { 
     if(data!= null) 
     { 
     Intent showContent = new Intent(getApplicationContext(),MainActivity.class); 
     startActivity(showContent); 

     } 
     } 
0

我々は、さまざまな方法でこれを実装し、それがうまく働いています。スプラッシュスクリーンは、ビューであり、ビューフリッパの最初の位置にあるアクティビティではありません。読み込みが完了すると、スプラッシュスクリーンがアニメーションで閉じられます。

関連する問題