Я хотел бы принимать сообщения от сервера постоянно, поэтому я делаю MainActivity implements Runnable
и переопределяю run()
.
В run()
у меня есть бесконечный цикл для приема сообщений.Кроме того, я запускаю поток в onCreate()
.
Однако, когда я запускаю приложение в эмуляторе, возникает исключение, которое касается утечки окна.
Код:
public class MainActivity extends AppCompatActivity implements Runnable {
@Override
public void run() {
try {
while (true) {
if (client.isConnected()) {
if (!client.isInputShutdown()) {
if ((content = br.readLine()) != null) {
content += "\n";
handler.sendEmptyMessage(0x123);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button_send);
editText = (EditText) findViewById(R.id.editText);
textView = (TextView) findViewById(R.id.textView);
showInputDialog();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = editText.getText().toString();
editText.setText("");
Message msg = Message.obtain();
msg.obj = str;
msg.what = CHANGE_TEXT;
msg.arg1 = 1;
msg.arg2 = 1;
handle.sendMessage(msg);
new MsgThread(str);
}
});
new Thread(Mainactivity.this).start();
}
}