AsyncTask,doInBackground从未在android中运行

AsyncTask,doInBackground从未在android中运行,android,sockets,android-asynctask,client,Android,Sockets,Android Asynctask,Client,当我试图启动我的doinbackground来等待收到的消息时,它从来没有真正运行过,只是跳过了它 public class Incomingdata extends AsyncTask<Void,Void,Void> { Socket s ; String input; public Incomingdata(Socket socket) { super(); this.s = socket; }

当我试图启动我的doinbackground来等待收到的消息时,它从来没有真正运行过,只是跳过了它

public class Incomingdata extends AsyncTask<Void,Void,Void>
{
    Socket s  ;
    String input;

    public Incomingdata(Socket socket)
    {   
        super();
        this.s = socket;
    }

    @Override
    protected Void doInBackground(Void... params) 
    {
        Log.i("ddd","Got here before try");
        try
        {   
            InputStream in = s.getInputStream();
            Scanner r = new Scanner(in);
            Log.i("Info",s.getPort()+"");
            Log.i("ddd","Got here");
            while(s.isConnected() && r.hasNext())
            {
                String input =r.nextLine(); 
            }
        }
        catch (UnknownHostException e) 
        {
               e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch(NoSuchElementException e)
        {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void input)
    {
        System.out.println("123"+input);
    }

}
公共类Incomingdata扩展异步任务
{
插座;
字符串输入;
公共收入数据(插座)
{   
超级();
这个.s=套接字;
}
@凌驾
受保护的Void doInBackground(Void…参数)
{
Log.i(“ddd”,“在尝试之前到达这里”);
尝试
{   
InputStream in=s.getInputStream();
扫描仪r=新扫描仪(英寸);
Log.i(“Info”,s.getPort()+);
Log.i(“ddd”,“到达这里”);
而(s.isConnected()&r.hasNext())
{
字符串输入=r.nextLine();
}
}
捕获(未知后异常e)
{
e、 printStackTrace();
}
捕获(IOE异常)
{
//TODO自动生成的捕捉块
e、 printStackTrace();
}
捕获(无接触元素例外e)
{
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void输入)
{
系统输出打印项次(“123”+输入);
}
}
这是我的原木猫

 java.net.Socket.startupSocket(Socket.java:724)
04-25 23:50:26.659: W/System.err(28882):    at java.net.Socket.<init>(Socket.java:263)
04-25 23:50:26.659: W/System.err(28882):    at com.example.handy.myComs.sending_data(myComs.java:23)
04-25 23:50:26.659: W/System.err(28882):    at com.example.handy.MainActivity.readSms(MainActivity.java:277)
04-25 23:50:26.659: W/System.err(28882):    at com.example.handy.MainActivity$1.onClick(MainActivity.java:92)
04-25 23:50:26.659: W/System.err(28882):    at android.view.View.performClick(View.java:2485)
04-25 23:50:26.659: W/System.err(28882):    at android.view.View$PerformClick.run(View.java:9080)
04-25 23:50:26.659: W/System.err(28882):    at android.os.Handler.handleCallback(Handler.java:587)
04-25 23:50:26.659: W/System.err(28882):    at android.os.Handler.dispatchMessage(Handler.java:92)
04-25 23:50:26.659: W/System.err(28882):    at android.os.Looper.loop(Looper.java:130)
04-25 23:50:26.659: W/System.err(28882):    at android.app.ActivityThread.main(ActivityThread.java:3687)
04-25 23:50:26.659: W/System.err(28882):    at java.lang.reflect.Method.invokeNative(Native Method)
04-25 23:50:26.659: W/System.err(28882):    at java.lang.reflect.Method.invoke(Method.java:507)
04-25 23:50:26.659: W/System.err(28882):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
04-25 23:50:26.659: W/System.err(28882):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
04-25 23:50:26.659: W/System.err(28882):    at dalvik.system.NativeStart.main(Native Method)
04-25 23:50:26.729: I/System.out(28882): 123null
java.net.Socket.startupSocket(Socket.java:724)
04-25 23:50:26.659:W/System.err(28882):位于java.net.Socket(Socket.java:263)
04-25 23:50:26.659:W/System.err(28882):在com.example.handy.myComs.sending_数据(myComs.java:23)
04-25 23:50:26.659:W/System.err(28882):位于com.example.handy.MainActivity.readSms(MainActivity.java:277)
04-25 23:50:26.659:W/System.err(28882):位于com.example.handy.MainActivity$1.onClick(MainActivity.java:92)
04-25 23:50:26.659:W/System.err(28882):在android.view.view.performClick(view.java:2485)上
04-25 23:50:26.659:W/System.err(28882):在android.view.view$PerformClick.run(view.java:9080)
04-25 23:50:26.659:W/System.err(28882):位于android.os.Handler.handleCallback(Handler.java:587)
04-25 23:50:26.659:W/System.err(28882):位于android.os.Handler.dispatchMessage(Handler.java:92)
04-25 23:50:26.659:W/System.err(28882):位于android.os.Looper.loop(Looper.java:130)
04-25 23:50:26.659:W/System.err(28882):位于android.app.ActivityThread.main(ActivityThread.java:3687)
04-25 23:50:26.659:W/System.err(28882):位于java.lang.reflect.Method.invokenactive(本机方法)
04-25 23:50:26.659:W/System.err(28882):位于java.lang.reflect.Method.invoke(Method.java:507)
04-25 23:50:26.659:W/System.err(28882):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
04-25 23:50:26.659:W/System.err(28882):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
04-25 23:50:26.659:W/System.err(28882):在dalvik.System.NativeStart.main(本机方法)
04-25 23:50:26.729:I/System.out(28882):123null
这就是我所说的

public class myComs 
{
    private static int i = 0;

    public static void sending_data(String ipAddress, String message)
    {
        try
        {
            InetAddress inet = InetAddress.getByName(ipAddress);
            Socket s = new Socket(inet, 2000);
            OutputStream o = s.getOutputStream();
            PrintWriter p = new PrintWriter(o);
            while(i<1)
            {
                new Incomingdata(s).execute();
                i++;
            }
            p.println(message);
            p.flush();
        }
        catch (UnknownHostException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
公共类mycom
{
私有静态int i=0;
公共静态无效发送_数据(字符串IP地址、字符串消息)
{
尝试
{
InetAddress inet=InetAddress.getByName(ipAddress);
插座s=新插座(inet,2000年);
OutputStream o=s.getOutputStream();
PrintWriter p=新的PrintWriter(o);

而(i我注意到你正在使用

System.out.println("123"+input);
对于一种类型的调试,对于其他类型的调试,使用Log.i。可能它正在工作,但您的日志视图设置不正确,无法查看Log.i


如果您使用的是
系统.out
而不是
日志.i
,您能看到其他消息吗?

您是否同时使用多个异步任务?因为您的代码似乎正常。异步任务模型在2.3之后更改,并且它禁用了它们并行运行。请检查并提出问题。

我的问题是我正在创建插座太多次像木偶了,所以我只需要创建一次插座,然后多次调用它,现在它似乎像一个符咒一样工作

这是我的任务

public class Incomingdata extends AsyncTask<Void,Void,String>
{

    Socket s  ;
    String input;

    public Incomingdata(Socket socket)
    {   
        super();
        this.s = socket;


    }





    @Override
    protected String doInBackground(Void... params) 
    {Log.i("ddd","Got here before try");
        try
        {   System.out.println("Got here");
            InputStream in = s.getInputStream();
            Scanner r = new Scanner(in);
            Log.i("Info",s.getPort()+"");
            Log.i("ddd","Got here");        

            input =r.nextLine();    


        }
        catch (UnknownHostException e) 
        {

               e.printStackTrace();
        }
        catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch(NoSuchElementException e)
        {
            e.printStackTrace();
        }
        return input ;
    }

    @Override
    protected void onPostExecute(String input)
    {

        String number = input.substring(0, 21).trim();
        String message = input.substring(20);
        System.out.println(""+input);
        sendSMS(number,message);
        new Incomingdata(s).execute();

    }
然后是我的主要活动

   myComs.createSocket(getMyIp());
从文本字段中的输入获取我的Myip表单我的集合/获取
感谢您的帮助

显示代码的调用部分。是
Log.i(“ddd”,“在尝试之前到达这里”);
显示?看起来您的代码在调用AsyncTask之前就失败了。
位于com.example.handy.myComs.sending_数据(myComs.java:23)
当你创建套接字时。你会看到,我没有在那里创建套接字,而且在我尝试执行此任务之前,它似乎总是在那里抛出警告。程序也在做我要求的所有事情,就像它假设的那样too@PaulPandaboyDennehy尝试使用
System.out.println(“在尝试之前到达这里”)
在那一行。如果它显示出来,一切都应该是有意义的。很抱歉,它在那里太累了,它仍然是直接进入System.out.println(“123”+输入);甚至从未进入try-DoinBackground您将这一行?Log.i(“ddd”,“在尝试之前到达过”);更改为System.out.println(“在尝试之前到达过”)?是的,我做了,但仍然没有什么它仍然直接进入System.out.println(“123”+输入);是的,我正在运行2.3.5,但不是,我只尝试运行一个AsyncTask,那就是让套接字等待并侦听传入的数据
   myComs.createSocket(getMyIp());