Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Java AsyncTask执行,但只是有时执行_Java_Android_Android Asynctask - Fatal编程技术网

Java AsyncTask执行,但只是有时执行

Java AsyncTask执行,但只是有时执行,java,android,android-asynctask,Java,Android,Android Asynctask,因此,我使用此代码调用我的AsyncTask Log.d("before","make_connection"); new Make_Connection().execute(); Log.d("after","make_connection"); 我的班级 private class Make_Connection extends AsyncTask<Void,Void,String>{ final int port = 4445; @Override

因此,我使用此代码调用我的AsyncTask

Log.d("before","make_connection");
new Make_Connection().execute();
Log.d("after","make_connection");
我的班级

private class Make_Connection extends AsyncTask<Void,Void,String>{

    final int port = 4445;

    @Override
    protected void onPreExecute() {
        Toast.makeText(KeyboardActivity.this,"This runs",Toast.LENGTH_LONG).show();
    }

    @Override
    protected String doInBackground(Void... params) {
        Log.d("Connection","Started");
        Log.e("Connec","this runs");
        try {
            socket = new Socket(IP,port);
            //dout = new DataOutputStream(socket.getOutputStream());
            //dout.writeUTF("Connection Formed");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    protected void onPostExecute(String result) {
        Toast.makeText(KeyboardActivity.this,"Connection Made",Toast.LENGTH_SHORT).show();
    }


}
但有一半的时间我看不到

Log.d("Connection","Started");
Log.e("Connec","this runs");
即使
onPreExecute()
每次都能正常运行。 我在运行7.1和7.0的两个不同手机上进行了测试


有人能告诉我为什么会发生这种情况吗?默认情况下,任务是按顺序运行的。他们都在同一个执行人身上执行。从这里开始

如果确实需要并行执行,可以调用 executeOnExecutor(java.util.concurrent.Executor,对象[])与 线程池执行器


默认情况下,异步任务按顺序运行。他们都在同一个执行人身上执行。从这里开始

如果确实需要并行执行,可以调用 executeOnExecutor(java.util.concurrent.Executor,对象[])与 线程池执行器

尝试:

而不仅仅是

new Make_Connection().execute();
这是必需的,因为在Android SDK 13或更高版本中,默认情况下它们是串行运行的。因此,如果要同时运行多个
AsyncTask
,请使用
executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR)
有关更多详细信息,请参见执行顺序下的说明

而不仅仅是

new Make_Connection().execute();
这是必需的,因为在Android SDK 13或更高版本中,默认情况下它们是串行运行的。因此,如果要同时运行多个
AsyncTask
,请使用
executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR)

有关更多详细信息,请参见执行顺序下的解释,从

此应用程序中有多少异步任务?3一个与此任务并行运行,另一个在此任务之前执行这是问题所在。你必须告诉他们并行运行我是android新手,所以你能告诉我一些关于我是如何做到这一点的文档吗?你在这个应用程序中有多少异步任务?3一个与这个并行运行,另一个在这个之前执行这是问题所在。你必须告诉他们并行运行我是android新手,所以你能告诉我一些关于如何运行的文档吗?答案是这样的。一个活动不能同时运行两个异步任务吗?它可以,使用executeOnExecutor()。一个活动不能同时运行两个异步任务吗?它可以,使用executeOnExecutor()。
new Make_Connection().execute();