这段代码有什么问题?当我像这样实现它时,我的应用程序正常工作。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textOut = (EditText) findViewById(R.id.textout);
IPAddress = (EditText) findViewById(R.id.editTextIPAddress);
Button buttonSend = (Button) findViewById(R.id.send);
Button buttonSet = (Button) findViewById(R.id.set);
textIn = (TextView) findViewById(R.id.textin);
buttonSend.setOnClickListener(buttonSendOnClickListener);
buttonSet.setOnClickListener(buttonSetOnClickListener);
Thread myThread = new Thread()
{
public void run()
{
runClient();
}// end method run
};// end myThread
}// end method onCreate
但是当我以这种方式实现它时。它强行关闭:
Button.OnClickListener buttonSetOnClickListener = new Button.OnClickListener()
{
@Override
public void onClick(View arg0)
{
myThread.start();
}// end method onClick
};
Thread myThread = new Thread()
{
public void run()
{
runClient();
}// end method run
};// end myThread
我能够尝试这个,但它改变了程序的逻辑:
Button.OnClickListener buttonSetOnClickListener = new Button.OnClickListener()
{
@Override
public void onClick(View arg0)
{
runOnUiThread(myThread);
}// end method onClick
};
Thread myThread = new Thread()
{
public void run()
{
runClient();
}// end method run
};// end myThread
第一个代码在调用onCreate()后运行myThread。问题是我想在按下按钮后运行myThread。但这样做会导致部队关闭。是什么原因导致此力关闭,如果按下按钮,我该怎么做才能运行一个线程?
答案 0 :(得分:0)
不应在UI线程上执行时间/资源密集型操作。所以runOnUiThread(myThread)
可能不是一个好主意。
此外,UI无法在其他线程上进行操作。
我认为您应该使用AsyncTask
界面。
http://android-developers.blogspot.com/2009/05/painless-threading.html