2013-08-31 139 views
-1

我有一个类,我已经实现了runnable,我开始在这个类的函数之一的线程,我从主要活动调用此函数,我创建这个对象类和调用线程class.My主要活动代码,我调用这个类的方法,方法是:我的应用程序崩溃时,我开始新的线程

broadcast broadcastobject.threadfunc(messages); 

我的课堂,我创建线程是:

public class broadcast { 

private DatagramSocket socket; 
String str; 
private static final int TIMEOUT_MS = 10; 
WifiManager mWifi; 
EditText et; 
DatagramPacket packet; 
Button bt; 
private static final int SERVERPORT = 11111; 
private static final String SERVER_IP = "192.168.1.255"; 


public void threadfunc(String message){ 
    str=message; 
       new Thread(new ClientThread()).start(); 
} 

/* 
private InetAddress getBroadcastAddress() throws IOException { 
     DhcpInfo dhcp = mWifi.getDhcpInfo(); 
     if (dhcp == null) { 
      //Log.d(TAG, "Could not get dhcp info"); 
      return null; 
     } 

     int broadcast = (dhcp.ipAddress & dhcp.netmask) | ~dhcp.netmask; 
     byte[] quads = new byte[4]; 
     for (int k = 0; k < 4; k++) 
      quads[k] = (byte) ((broadcast >> k * 8) & 0xFF); 
     return InetAddress.getByAddress(quads); 
     } 

     */ 

class ClientThread implements Runnable { 

    @Override 
    public void run() { 


     try { 
      socket = new DatagramSocket(SERVERPORT); 

      socket.setBroadcast(true); 
    //    socket.setSoTimeout(TIMEOUT_MS); 
     } catch (SocketException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

      InetAddress serverAddr = null; 
      try { 


       serverAddr = InetAddress.getByName(SERVER_IP); 


      } catch (UnknownHostException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      packet = new DatagramPacket(str.getBytes(), str.length(),serverAddr,SERVERPORT); 

      try { 

        socket.send(packet); 

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

    } 

} 

我的日志猫:

08-31 21:55:56.277: D/gralloc_goldfish(1669): Emulator without GPU emulation detected. 
    08-31 21:56:02.467: D/AndroidRuntime(1669): Shutting down VM 
    08-31 21:56:02.467: W/dalvikvm(1669): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
    08-31 21:56:02.517: E/AndroidRuntime(1669): FATAL EXCEPTION: main 
    08-31 21:56:02.517: E/AndroidRuntime(1669): java.lang.NullPointerException 
    08-31 21:56:02.517: E/AndroidRuntime(1669): at soft.b.peopleassist.Send$1.onClick(Send.java:113) 
    08-31 21:56:02.517: E/AndroidRuntime(1669):  at android.view.View.performClick(View.java:3480) 
    08-31 21:56:02.517: E/AndroidRuntime(1669): at android.view.View$PerformClick.run(View.java:13983) 
    08-31 21:56:02.517: E/AndroidRuntime(1669):  at android.os.Handler.handleCallback(Handler.java:605) 
    08-31 21:56:02.517: E/AndroidRuntime(1669):  at android.os.Handler.dispatchMessage(Handler.java:92) 
    08-31 21:56:02.517: E/AndroidRuntime(1669): at android.os.Looper.loop(Looper.java:137) 
     08-31 21:56:02.517: E/AndroidRuntime(1669): at android.app.ActivityThread.main(ActivityThread.java:4340) 
     08-31 21:56:02.517: E/AndroidRuntime(1669): at java.lang.reflect.Method.invokeNative(Native Method) 
     08-31 21:56:02.517: E/AndroidRuntime(1669): at java.lang.reflect.Method.invoke(Method.java:511) 
    08-31 21:56:02.517: E/AndroidRuntime(1669): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    08-31 21:56:02.517: E/AndroidRuntime(1669): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    08-31 21:56:02.517: E/AndroidRuntime(1669): at dalvik.system.NativeStart.main(Native Method) 
+0

没有它没有。 @Gray – Nerd

+0

你发布了相同的代码。相同的堆栈跟踪。你可能会问一个稍微不同的问题,但99%重复。 – Gray

+0

没有完全不同的代码,你可以看到线程启动的函数,而不是线程扩展的类,这是完全不同的东西。 @Gray – Nerd

回答

1

这只是表示您正在使用的仿真器没有启用GPU仿真。在Android SDK Tools R15中,您可以启用GPU仿真。您需要创建一个新的仿真器虚拟设备,并在硬件属性中将GPU仿真设置为true。

enter image description here

+0

谢谢,但它甚至不工作,当我在android设备上运行它..? – Nerd

+0

当你在实际的设备上运行它时,你从logcat获得什么输出?在问题中发布它。 –

+0

我实际上没有在设备的开发模式下运行,所以我不能告诉你logcat。 – Nerd

相关问题