Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的线程_Android_Multithreading - Fatal编程技术网

android中的线程

android中的线程,android,multithreading,Android,Multithreading,我需要一些帮助,因为我只是在线程中调用一个方法。现在我想要的是只等待回复表单getData()方法15秒。如果在15秒前回复,则应终止,否则在15秒后应终止。代码如下: boolean networkStatus; private Runnable runnable; private ProgressDialog m_ProgressDialog = null; private Runnable returnRes = new Runnable() {

我需要一些帮助,因为我只是在线程中调用一个方法。现在我想要的是只等待回复表单getData()方法15秒。如果在15秒前回复,则应终止,否则在15秒后应终止。代码如下:

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来取消请求)。