2013-08-31 3 views
-1

나는 runnable을 구현 한 클래스가 있으며이 클래스의 함수 중 하나에서 스레드를 시작하고이 함수를 주 활동에서 호출합니다.이 객체를 만듭니다. 클래스와 I는이 클래스의 메서드를 호출 곳에서 스레드 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

아니요. @ 그레이 – Nerd

+0

당신은 동일한 코드를 게시했습니다. 동일한 스택 추적. 약간 다른 질문을 할 수도 있지만 99 % 중복됩니다. – Gray

+0

완전히 다른 코드가 아니라면, 스레드가 시작된 함수를 볼 수 있습니다. 스레드가 확장 된 클래스는 완전히 다른 것입니다. @ 그레이 – Nerd

답변

1

이것은 단순히 사용중인 에뮬레이터에 GPU 에뮬레이션을 사용할 수 없음을 의미합니다. Android SDK Tools R15에서 GPU 에뮬레이션을 활성화 할 수 있습니다. 새 에뮬레이터 가상 장치를 만들고 하드웨어 속성에서 GPU 에뮬레이션을 true로 설정해야합니다.

enter image description here

+0

고마워하지만 안드로이드 장치에서 실행할 때 작동하지 않습니다 .. ??? – Nerd

+0

실제 장치에서 logcat을 실행할 때 어떤 출력을 얻습니까? 질문에 게시하십시오. –

+0

나는 실제로 장치의 개발 모드에서 실행되지 않으므로 logcat을 표시 할 수 없습니다. – Nerd

관련 문제