android中的线程
我需要一些帮助,因为我只是在线程中调用一个方法。现在我想要的是只等待回复表单getData()方法15秒。如果在15秒前回复,则应终止,否则在15秒后应终止。代码如下:android中的线程,android,multithreading,Android,Multithreading,我需要一些帮助,因为我只是在线程中调用一个方法。现在我想要的是只等待回复表单getData()方法15秒。如果在15秒前回复,则应终止,否则在15秒后应终止。代码如下: boolean networkStatus; private Runnable runnable; private ProgressDialog m_ProgressDialog = null; private Runnable returnRes = new Runnable() {
boolean networkStatus;
private Runnable runnable;
private ProgressDialog m_ProgressDialog = null;
private Runnable returnRes = new Runnable() {
@Override
public void run() {
if(networkStatus){
setData();
m_ProgressDialog.dismiss();
}
};
private void callGetdata(){
runnable = new Runnable() {
@Override
public void run() {
networkStatus = getData();
runOnUiThread(returnRes);
}
};
Thread thread = new Thread(null, runnable, "MovetoBackground");
thread.start();
m_ProgressDialog = ProgressDialog.show(this, "", getString(R.string.loadMsg), true);
}
由于某些网络类内置了超时选项,例如ServerSocket.setSoTimeout()函数,因此getData()实际上是做什么的。另外,我建议使用Android的AsyncTask类,因为它使多线程处理更容易。我假设getData是一个阻塞调用。。。因此,除非您有权访问该方法,否则您实际上无法终止该调用(除了断开底层网络连接)。那么你在getData中有什么呢?@Lirik或call
Thread.stop()
,但这是一个BAAAD想法你在那里做的事情需要AsyncTask(它事件处理进度对话框)。正如欧米尼所说的,调查一下。这是一个起点:。实际上,我们正在使用WCF服务。所以我使用ksoap2库进行工作。但有时需要很长时间才能做出反应,旋转器会继续旋转。我只想限制15秒。在ksoap2中,我没有找到任何连接超时函数。我没有使用ksoap,但是这个页面可能有用(它使用TimerTask来取消请求)。