0

스레드를 사용하여 다차원 배열에 8000 개의 문자열을 저장하기 위해 실시간으로 데이터를 처리하려고합니다. 배열을 저장하기위한 논리는 문자열 8000 번으로 테스트를 거쳤습니다. 이 코드에는 catch (NumberFormatException e)와 catch (NullPointerException e)의 두 가지 변형이 있습니다. 두 가지 모두에 대한 logcat은 다음과 같습니다. 그런 다음 충돌합니다. 이 문제를 어떻게 해결할 수 있습니까?디스플레이 고정, 강제 종료 또는 대기 및 GC_MALLOC 및 GC_Concurrent가 트리거 됨

변경 전송 = readMessage; null을 0으로 설정하면 오류가 방지됩니다. 그러나 내 UI가 여전히 고정되어 강제 종료 또는 대기 옵션이 표시됩니다. 또한 GC_MALLOC 및 GC_Concurrent가 오류 로그에 표시됩니다. 캐치

public double [][]stored = new double[8000][1]; 
    public static HjorthClass finalValue; 
    public String transfer; 


    class Task implements Runnable 
    { 
     @Override 
     public void run() 
     { 
      try{ 
       Thread.sleep(2000); 
       } 
       catch(InterruptedException e) 
       { 
       } 

        for(int a = 0; a<8000; a++) 
       { 
         try 
         { 
          double[] convert = new double[1]; 
          for(int z=0; z <1;z++) 
           { 
          convert[z]= Double.parseDouble(transfer); 
          } 
          for(int j=0; j<1;j++) 
          { 
          stored[a][j]= convert[j]; 
          } 
         } 
         catch(NumberFormatException e) 
         { 
         } 

       } 


      finalValue = new HjorthClass(stored); 
     }} 


    private final Handler mHandler = new Handler() { 
     @Override 
     public void handleMessage(final Message msg) { 
      switch (msg.what) { 

      case MESSAGE_READ: 
      byte[] readBuf = (byte[]) msg.obj; 
       String readMessage = new String(readBuf,0,msg.arg1); 
       String transfer = readMessage; 
       mConversationArrayAdapter.add("Voltage: "+ transfer); 
       new Thread(new Task()).start(); 
       break; 

로그 캣 (NumberFormatException이 전자) 캐치 (NullPointerException이 전자)와

04-07 06:04:01.712: E/AndroidRuntime(24162): FATAL EXCEPTION: Thread-14 
04-07 06:04:01.712: E/AndroidRuntime(24162): java.lang.NullPointerException 
04-07 06:04:01.712: E/AndroidRuntime(24162): at org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:263) 
04-07 06:04:01.712: E/AndroidRuntime(24162): at java.lang.Double.parseDouble(Double.java:318) 
04-07 06:04:01.712: E/AndroidRuntime(24162): at com.example.android.BluetoothChat.BluetoothChat$Task.run(BluetoothChat.java:248) 
04-07 06:04:01.712: E/AndroidRuntime(24162): at java.lang.Thread.run(Thread.java:1019) 

로그 캣

04-07 05:51:55.342: E/AndroidRuntime(23838): FATAL EXCEPTION: Thread-181 
04-07 05:51:55.342: E/AndroidRuntime(23838): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
04-07 05:51:55.342: E/AndroidRuntime(23838): at android.os.Handler.<init>(Handler.java:121) 
04-07 05:51:55.342: E/AndroidRuntime(23838): at android.app.Activity.<init>(Activity.java:680) 
04-07 05:51:55.342: E/AndroidRuntime(23838): at com.example.android.BluetoothChat.HjorthClass.<init>(HjorthClass.java:18) 
04-07 05:51:55.342: E/AndroidRuntime(23838): at com.example.android.BluetoothChat.BluetoothChat$Task.run(BluetoothChat.java:263) 
04-07 05:51:55.342: E/AndroidRuntime(23838): at java.lang.Thread.run(Thread.java:1019) 
+0

어, 중단 될 때 아무것도하지 않습니까? 할 일이 아니야 ... – fge

+0

우리에게 말해 줘서 고마워. 다른 질문 있나요? – Baby

+0

죄송합니다. 충돌을 추가하는 것을 잊어 버렸습니다. 방해가되면 어떻게해야합니까? – SeniorDesignStudy

답변

0

나는 당신이 조건을 넣을 수 있습니다 , 문제가 transfer가 null의 생각 다음과 같이 변환하기 전에 : (주제를 편집하고 변경하는 첫 번째 질문)

if(transfer ==null) 
transfer="0"; 
+0

5 분만주세요! 나는 그것을 시험 할 것이다! – SeniorDesignStudy

+0

전송은 문자열입니다. "";로 설정해야합니까? – SeniorDesignStudy

+0

당신이 설정해야한다고 생각합니다 ** = "0"**, –