我是android.I'm的新手,通過WiFi監聽傳入的消息,它適用於監聽和更新用戶界面,但是當我嘗試退出它並不響應後退按鈕直到它在緩衝區中接收到消息。從我的理解,按鈕是在UI線程和Runnable是一個單獨的線程,這就是爲什麼它不響應按鈕按立即因爲忙於單獨的線程。那麼,我怎麼能打斷後退按鈕按下「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
}
'中斷()'只將中斷標誌。執行的代碼負責檢查該標誌並正確終止。 – afk5min 2013-04-24 11:32:32
@ afk5min是和否。雖然在這種情況下比沒有更多。它根據線程的當前狀態具有其他效果。我修改瞭解決此問題的答案。 http://docs.oracle.com/javase/6/docs/api/java/io/InputStream.html#close%28%29 – 2013-04-24 11:41:14
如果線程處於阻塞等待狀態,則會生成InterruptedException - 但該異常被檢查;被執行的代碼被迫處理這種情況。 (另外,上面的例子不使用阻塞等待) – afk5min 2013-04-24 11:45:29