2012-04-19 3 views
0

メニューを使用してハンドラにメッセージを送信したいと考えています。ハンドラはサーバから更新するスレッドを開始しました。サーバーが閉鎖されているときに更新中にメニューがブロックされる

しかし、私は私のアプリをテストしたときに、私はサーバーを終了し、メニューを押した。アンドロイドアプリはメニュー内でブロックされています。メニューはメッセージを送信するだけなので発生しません。したがって、私のUIはブロックされました。ここで

は、私は私の答えを見つけることができませんコード

final Handler messageHandler = new Handler() { 
    public void handleMessage(Message msg) { 

     switch (msg.arg2) { 
     case 0: 
      int total = msg.arg1; 
      progressDialog.setProgress(total); 
      if (total >= progressDialog.getMax()) { 
       // 取消Dialog并且置0 
       dismissDialog(PROGRESS_DIALOG); 
       progressDialog.setProgress(0); 
       Toast.makeText(CardProcessView.this, "下载完成", 
         Toast.LENGTH_SHORT).show(); 
       initData(); 
      } 
      break; 
     case 1: 
      updatabase(); 
      break; 
     } 

    } 
}; 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case 0: 
     Message message = new Message(); 
     message.arg2 = 1; 
     messageHandler.sendMessage(message); 
     break; 
    default: 
     Log.d("update", "未更新"); 
    } 
    return true; 
} 


protected void updatabase() { 

    new Thread(updateRunable).run(); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add("更新操作向导"); 
    return true; 
} 

です。みんなありがとう。

new Thread(updateRunable).run(); 

へ:

+0

新しいスレッド(updateRunable).run();改成 '新しいスレッド(updateRunable).start();' – idiottiger

答えて

0

は、あなたが変更必要

new Thread(updateRunable).start(); 

thread.run()だけで、あなたがスレッドを作るためにthread.start()を呼び出す必要がある、新しいスレッドでメソッドを開始いけないスレッドのrunメソッドを呼び出し、この新しいスレッドでrunメソッドを呼び出します。

+0

ありがとうございます!できます。私はいくつかのJavaの知識を見直すために時間を取る必要があります。 – Sam

関連する問題