2011-02-01 1 views
4

私のトーストは、ファイルのダウンロードが完了するまで表示されません(私はダウンロード機能にコメントしました)。なぜどんなアイデア?私のトーストはなぜ現れないのですか?

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ImageView main_image_view = (ImageView)this.findViewById(R.id.main_image_view); 
    TextView text_view = (TextView)this.findViewById(R.id.main_text_view); 

    Context context = getApplicationContext(); 
    CharSequence text = "File Not Found. Downloading... Please be patient, it's a large file!"; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(context, text, duration); 
    toast.show(); 

    // This function fetches a file from a URL. 
    brain = get_frame_fl(file_name, mActive_slice); 
    brain_slice = Bitmap.createBitmap(brain_pixels, frame_width, frame_height, Bitmap.Config.ARGB_8888); 

    // display 
    main_image_view.setImageBitmap(brain_slice); 
} 

答えて

21

私はあなたがtoast.show()を行うときに、UIスレッドがトーストメッセージを表示を要求だと思います。 immediatleyを必ずしも実行するとは限りません。次に、ファイルのダウンロードを実行してUIスレッドで長時間実行される操作を実行しています。完了するまでUIがブロックされます。私はあなたのファイルをAsyncTaskにダウンロードして、UIをハングしないようにします。

+3

確かに。 'AsyncTask'の例についてはこの答えを見てください:http://stackoverflow.com/questions/4828676/preventing-internet-accessing-method-from-delaying-a-toast-popup/4829593#4829593 – binnyb

+2

AsyncTaskはこの問題のより簡単なアプローチになります。 – prolink007

+0

すばらしい。ありがとうございました。そしてbinnybの参照に感謝します。 –

関連する問題