스레드를 사용하여 다차원 배열에 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)
어, 중단 될 때 아무것도하지 않습니까? 할 일이 아니야 ... – fge
우리에게 말해 줘서 고마워. 다른 질문 있나요? – Baby
죄송합니다. 충돌을 추가하는 것을 잊어 버렸습니다. 방해가되면 어떻게해야합니까? – SeniorDesignStudy