2012-03-08 7 views
0

後、私は(擬似コード)を行う場所onClickButton機能を持つアクティビティインジケータショー:私の私のアルゴリズム

show activityIndicatorView (or ProgressBar or change label text no matter) 
execute my algorithm 
hide activityIndicatorView 

actvitiyIndi​​catorViewは表示されません。関数の終わりにhideを削除すると、アルゴリズムの後に出現します。それにもかかわらず、私はアルゴリズムを実行する前にそれを示します。

どうすれば修正できますか?

答えて

2

おそらくあなたの私のアルゴリズムを実行するにはあなたもちょうどアルゴリズムの前に活動の指標を示している

...メインスレッドで呼び出された長いCPU時間のかかるプロセスである... UIは通常、いくつかを取りますあなたのアクティビティインジケータを追加する..)..しかし、それを行う前にレイアウトを更新する時間..あなたの; gorithはメインのスレッドで行われます..そして、それはUIの更新をブロックします。アクティビティを非表示にする...あなたのアクティビティが隠れているので、それが追加されて表示されているのを見ることはできません。

解決するには別のスレッドメインスレッドなし)UIは更新され、タスクがバックグラウンドで完了します ..this道..

別の方法は、そのUIの更新自体の助けを

+0

おかげdelay..soいくつかの後の長いタスクを実行することです。あなたはどのようにそれを実現するための例を挙げることができますか? – user968991

+1

あなたのアルゴリズム関数がabc ..であると仮定してください。 '[self performselector:@selector(abc)withObject:nil afterDelay:2]'とabc関数の最後にhideアクティビティを移動します。オートコンプリートを使用してください。my codeはスペリングのために多くの間違いを持ちます。 – Shubhank