2013-08-31 132 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

相關問題