4

私はandroid.Iが初めてで、WiFi経由で受信メッセージを聞くアプリを構築しています.UIを聞いて更新するのに問題なく動作しますが、終了しようとすると、バッファ内のメッセージを受信するまで戻るボタンを押しても応答しません. 私の理解では、ボタンは UI スレッド上にあり、Runnable は別のスレッドであるため、別のスレッドでビジーであるため、ボタンを押してもすぐには応答しません。では、戻るボタンを押して「Runnable」を中断するにはどうすればよいですか?

どんな助けでも大歓迎です。

public Runnable mUpdate = new Runnable() {
    public void run() {            
        try {   
            line = in.readLine();
            newtext.setText(line);
            mHandler.post(this);
            Log.i("RESPONSE FROM SERVER", "S: Received Message: '" +line+ "'");

            //onBackPressed();
            //threadRunning = true;
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.e("Error" , "Something Happen");    
        }
    }
};  

編集:申し訳ありませんが、これを以前に投稿する必要があったため、「onCreate」でハンドラーを使用して「mUpdate」を呼び出します。正しい呼び方ですか?

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    intent = getIntent();
    setContentView(R.layout.activity_display_message);
    message = intent.getStringArrayExtra(MainActivity.EXTRA_MESSAGE);
    newtext = (TextView)findViewById(R.id.TextView1);
    userName = message[0];
    serverIP = message[1];
    sendConnectionRequest ();
    mHandler = new Handler();   // Handler to update UI      
    mHandler.post(mUpdate);     // post is a method to update UI

    }
4

2 に答える 2

-1

それが Android にどのように関係するのかはわかりませんが、あなたのタイトルから判断すると、Java でのスレッドの停止は、OS 自体によって処理される割り込みで行われます。

あなたのスレッドから、他のスレッドを中断します。

theOtherThread.interrupt() //--> inside your Thread.

そして反対側では:

 public void run(){
     while(true){
          try{
               //handle your logic
               Thread.sleep(100);
          }catch(InterruptedException){
             //thread was 'stopped' here
             Thread.currentThread().interrupt(); //this is a MUST
             break;
         }
     }
 }
于 2013-04-24T11:13:50.687 に答える