要使用NeuroSky的MindWave來抓一些腦波資料,他提供的Android API利用handler回傳message來回傳mindwave所抓到的腦波訊息。
在使用上我需要將EEG訊號儲存在Sqlite中,因為raw data的偵測與傳送速率是512 Hz,且官方所給的範例使用的handler是UI thread handler。自己寫的程式使用此handler來儲存資料會使得UI thread產生ANR的問題。
因此想先將偵測到的message儲存在一個容器內,然後呼叫另一個thread批次的儲存在Sqlite中。
然後慘劇就發生了,不曉得為什麼容器內的message會被當作垃圾回收!
handler程式碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | @Override public void handleMessage(Message msg) { switch (msg.what) { case 0 : Log.i(TAG, "got Message 0" ); break ; case TGDevice.MSG_STATE_CHANGE: switch (msg.arg1) { case TGDevice.STATE_IDLE: break ; case TGDevice.STATE_CONNECTING: SensingActivity.setState( "Connecting..." ); break ; case TGDevice.STATE_CONNECTED: SensingActivity.setState( "Connected." ); SensingActivity.getTGDevice().start(); break ; case TGDevice.STATE_NOT_FOUND: SensingActivity.setState( "Can't find" ); break ; case TGDevice.STATE_NOT_PAIRED: SensingActivity.setState( "not paired" ); break ; case TGDevice.STATE_DISCONNECTED: SensingActivity.setState( "Disconnected mang" ); } break ; case TGDevice.MSG_POOR_SIGNAL: //signal = msg.arg1; SensingActivity.setState( "Poor Signal: " + String.valueOf(msg.arg1)); break ; case TGDevice.MSG_RAW_DATA: //msgBuffer.add(msg); msgBuffer[index] = msg; Log.e(TAG, "In: msg.what = " + msgBuffer[index].what + ", msg.when = " + msgBuffer[index].getWhen() + ", number = " + index); index++; break ; case TGDevice.MSG_HEART_RATE: break ; case TGDevice.MSG_ATTENTION: //msgBuffer.add(msg); //msgBuffer[index++] = msg; msgBuffer[index] = msg; Log.e(TAG, "In: msg.what = " + msgBuffer[index].what + ", msg.when = " + msgBuffer[index].getWhen() + ", number = " + index); index++; SensingActivity.setAtt(String.valueOf(msg.arg1)); SensingActivity.setp1(msg.arg1); case TGDevice.MSG_MEDITATION: //msgBuffer.add(msg); // msgBuffer[index++] = msg; msgBuffer[index] = msg; Log.e(TAG, "In: msg.what = " + msgBuffer[index].what + ", msg.when = " + msgBuffer[index].getWhen() + ", number = " + index); index++; SensingActivity.setMed(String.valueOf(msg.arg1)); SensingActivity.setp2(msg.arg1); break ; case TGDevice.MSG_BLINK: msgBuffer[index] = msg; Log.e(TAG, "In: msg.what = " + msgBuffer[index].what + ", msg.when = " + msgBuffer[index].getWhen() + ", number = " + index); index++; break ; case TGDevice.MSG_RAW_COUNT: //tv.append("Raw Count: " + msg.arg1 + "\n"); break ; case TGDevice.MSG_LOW_BATTERY: //Toast.makeText(getApplicationContext(), "Low battery!", Toast.LENGTH_SHORT).show(); break ; case TGDevice.MSG_RAW_MULTI: //TGRawMulti rawM = (TGRawMulti)msg.obj; //tv.append("Raw1: " + rawM.ch1 + "\nRaw2: " + rawM.ch2); default : break ; } //if (msgBuffer.size() > maxBufferSize - 1) { if (index >= maxBufferSize) { index = 0 ; //Fixme // int i = 0; // for(Message mm : msgBuffer) { // Log.d(TAG, "check message msg.what = " + mm.what + " number = " + i); // i++; // } for ( int i = 0 ; i<maxBufferSize; ++i) { Log.d(TAG, "Out: msg.what = " + msgBuffer[i].what + ", msg.when = " + msgBuffer[i].getWhen() + ", number = " + i); } // 儲存db資料 if (OneOrTwo == 1 ) { // t1 = new SavingData(Buffer1); // while (t2 != null && t2.myThread.isAlive()) ; //Buffer2 = Collections.synchronizedList(new ArrayList<Message>()); Buffer2 = new Message[maxBufferSize]; msgBuffer = Buffer2; OneOrTwo = 2 ; } else { // t2 = new SavingData(Buffer2); // while (t1.myThread.isAlive()) ; //Buffer1 = Collections.synchronizedList(new ArrayList<Message>()); Buffer1 = new Message[maxBufferSize]; msgBuffer = Buffer1; OneOrTwo = 1 ; } } } |
在第34~36行,我們將message存放到Array中,然後馬上將Array的內容印出來檢查
當Array的內容儲存到一定的數量,我們再將Array所有的內容印出來再次檢查,如第84~86。Log的結果卻發現在84~86的傾印的內容有一大堆的message變成空值,這個問題抓了很久一直找不到解決的方法,是哪一個細節忽略掉了呢? 做成紀錄先
EventLog如下,line 1 ~ 100是存入容器時的log,line 101 ~ 200是批次列印時的結果。發現在批次列印時,容器內的message物件都不是原來的物件了(從msg.when推測出來)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | 01 - 26 15 : 16 : 10.340 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376205 , number = 0 01 - 26 15 : 16 : 10.340 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376205 , number = 1 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376219 , number = 2 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376219 , number = 3 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376220 , number = 4 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376220 , number = 5 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376221 , number = 6 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376221 , number = 7 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376221 , number = 8 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376221 , number = 9 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376222 , number = 10 01 - 26 15 : 16 : 10.350 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376222 , number = 11 01 - 26 15 : 16 : 10.360 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376237 , number = 12 01 - 26 15 : 16 : 10.360 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376237 , number = 13 01 - 26 15 : 16 : 10.360 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376237 , number = 14 01 - 26 15 : 16 : 10.360 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376238 , number = 15 01 - 26 15 : 16 : 10.360 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376238 , number = 16 01 - 26 15 : 16 : 10.360 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376238 , number = 17 01 - 26 15 : 16 : 10.360 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376238 , number = 18 01 - 26 15 : 16 : 10.370 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376238 , number = 19 01 - 26 15 : 16 : 10.370 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376239 , number = 20 01 - 26 15 : 16 : 10.370 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376239 , number = 21 01 - 26 15 : 16 : 10.380 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376257 , number = 22 01 - 26 15 : 16 : 10.380 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376257 , number = 23 01 - 26 15 : 16 : 10.380 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376258 , number = 24 01 - 26 15 : 16 : 10.380 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376259 , number = 25 01 - 26 15 : 16 : 10.380 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376259 , number = 26 01 - 26 15 : 16 : 10.390 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376260 , number = 27 01 - 26 15 : 16 : 10.390 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376260 , number = 28 01 - 26 15 : 16 : 10.390 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376261 , number = 29 01 - 26 15 : 16 : 10.390 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376261 , number = 30 01 - 26 15 : 16 : 10.390 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376261 , number = 31 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376277 , number = 32 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376277 , number = 33 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376277 , number = 34 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376278 , number = 35 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376278 , number = 36 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376278 , number = 37 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376279 , number = 38 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376279 , number = 39 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376279 , number = 40 01 - 26 15 : 16 : 10.400 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376279 , number = 41 01 - 26 15 : 16 : 10.420 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376297 , number = 42 01 - 26 15 : 16 : 10.420 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376297 , number = 43 01 - 26 15 : 16 : 10.420 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376297 , number = 44 01 - 26 15 : 16 : 10.420 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376297 , number = 45 01 - 26 15 : 16 : 10.420 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376298 , number = 46 01 - 26 15 : 16 : 10.420 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376298 , number = 47 01 - 26 15 : 16 : 10.420 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376298 , number = 48 01 - 26 15 : 16 : 10.430 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376298 , number = 49 01 - 26 15 : 16 : 10.430 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376298 , number = 50 01 - 26 15 : 16 : 10.430 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376298 , number = 51 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376314 , number = 52 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376315 , number = 53 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376315 , number = 54 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376316 , number = 55 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376316 , number = 56 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376317 , number = 57 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376317 , number = 58 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376318 , number = 59 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376318 , number = 60 01 - 26 15 : 16 : 10.440 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376319 , number = 61 01 - 26 15 : 16 : 10.460 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376337 , number = 62 01 - 26 15 : 16 : 10.460 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376337 , number = 63 01 - 26 15 : 16 : 10.460 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376338 , number = 64 01 - 26 15 : 16 : 10.460 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376338 , number = 65 01 - 26 15 : 16 : 10.460 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376339 , number = 66 01 - 26 15 : 16 : 10.470 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376340 , number = 67 01 - 26 15 : 16 : 10.470 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376341 , number = 68 01 - 26 15 : 16 : 10.470 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376341 , number = 69 01 - 26 15 : 16 : 10.470 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376342 , number = 70 01 - 26 15 : 16 : 10.470 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376342 , number = 71 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376354 , number = 72 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376355 , number = 73 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376355 , number = 74 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376356 , number = 75 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376356 , number = 76 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376356 , number = 77 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376356 , number = 78 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376357 , number = 79 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376357 , number = 80 01 - 26 15 : 16 : 10.480 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376357 , number = 81 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376375 , number = 82 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376376 , number = 83 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376376 , number = 84 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376377 , number = 85 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376377 , number = 86 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376377 , number = 87 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376377 , number = 88 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376377 , number = 89 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376378 , number = 90 01 - 26 15 : 16 : 10.510 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376378 , number = 91 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376395 , number = 92 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376395 , number = 93 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376396 , number = 94 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376396 , number = 95 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376396 , number = 96 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376396 , number = 97 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376396 , number = 98 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128 , msg.when = 1129376396 , number = 99 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 0 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 1 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 2 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 3 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 4 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 5 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 6 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376396 , number = 7 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 8 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 9 01 - 26 15 : 16 : 10.520 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 10 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 11 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 12 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 13 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 14 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 15 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 16 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 17 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376396 , number = 18 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 19 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 20 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 21 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 22 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 23 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 24 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 25 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 26 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 27 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 28 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 29 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376396 , number = 30 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 31 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 32 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376396 , number = 33 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 34 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 35 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 36 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 37 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 38 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 39 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 40 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 41 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 42 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376396 , number = 43 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 44 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 45 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 46 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 47 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 48 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 49 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 50 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 51 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 52 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 53 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 54 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 55 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 56 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 57 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 58 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 59 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 60 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 61 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 62 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 63 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 64 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 65 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 66 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 67 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 68 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 69 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 70 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 71 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 72 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 73 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 74 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 75 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 76 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 77 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 78 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 79 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 80 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 81 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 82 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 83 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 84 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 85 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 86 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 87 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 88 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376396 , number = 89 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 90 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 91 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 92 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 93 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 94 01 - 26 15 : 16 : 10.530 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 95 01 - 26 15 : 16 : 10.540 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 96 01 - 26 15 : 16 : 10.540 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0 , msg.when = 0 , number = 97 01 - 26 15 : 16 : 10.540 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376397 , number = 98 01 - 26 15 : 16 : 10.540 31127 - 31127 /cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128 , msg.when = 1129376396 , number = 99 |
[補充]
如果改成每收到一個message就發動一個thread去做存檔的工作,一樣會發生message物件不見得問題,覺得是我忽略了某一個基礎的問題,唉~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | @Override public void handleMessage(Message msg) { switch (msg.what) { ... case TGDevice.MSG_RAW_DATA: Log.e(TAG, "In: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + msgCount++); new SavingData2(msg); break ; case TGDevice.MSG_ATTENTION: Log.e(TAG, "In: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + msgCount++); new SavingData2(msg); SensingActivity.setAtt(String.valueOf(msg.arg1)); SensingActivity.setp1(msg.arg1); case TGDevice.MSG_MEDITATION: Log.e(TAG, "In: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + msgCount++); new SavingData2(msg); SensingActivity.setMed(String.valueOf(msg.arg1)); SensingActivity.setp2(msg.arg1); break ; case TGDevice.MSG_BLINK: Log.e(TAG, "In: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + msgCount++); new SavingData2(msg); break ; ... default : break ; } } |
另外改成每收到一個message就發動一個thread去做存檔,因為thread會自己排程很難去控制他的順序,所以又會有後產生的message先存檔的問題,造成資料庫中的資料順序不對,可以看下面的log節錄,TGDeviceHandler產生的順序和SavingData Thread執行的順序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 01 - 26 16 : 19 : 23.870 30164 - 30164 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128 , msg.when = 1133169728 , msgCount = 7216 01 - 26 16 : 19 : 23.870 30164 - 30164 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128 , msg.when = 1133169728 , msgCount = 7217 01 - 26 16 : 19 : 23.870 30164 - 30164 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128 , msg.when = 1133169728 , msgCount = 7218 01 - 26 16 : 19 : 23.870 30164 - 30164 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128 , msg.when = 1133169744 , msgCount = 7219 01 - 26 16 : 19 : 23.870 30164 - 6424 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 7216 01 - 26 16 : 19 : 23.870 30164 - 6424 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 26 16 : 19 : 23.870 30164 - 6423 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 128 , msg.when = 1133169746 , msgCount = 7215 01 - 26 16 : 19 : 23.870 30164 - 6422 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 128 , msg.when = 1133169745 , msgCount = 7214 01 - 26 16 : 19 : 23.870 30164 - 6425 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 7217 01 - 26 16 : 19 : 23.880 30164 - 6425 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 26 16 : 19 : 23.880 30164 - 30164 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128 , msg.when = 1133169744 , msgCount = 7220 01 - 26 16 : 19 : 23.880 30164 - 6426 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 7218 01 - 26 16 : 19 : 23.880 30164 - 30164 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128 , msg.when = 1133169745 , msgCount = 7221 01 - 26 16 : 19 : 23.880 30164 - 6426 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 26 16 : 19 : 23.880 30164 - 30164 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128 , msg.when = 1133169745 , msgCount = 7222 01 - 26 16 : 19 : 23.880 30164 - 6428 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 7220 01 - 26 16 : 19 : 23.880 30164 - 6428 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 26 16 : 19 : 23.880 30164 - 30164 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128 , msg.when = 1133169745 , msgCount = 7223 01 - 26 16 : 19 : 23.880 30164 - 6427 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 7219 01 - 26 16 : 19 : 23.880 30164 - 6427 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 26 16 : 19 : 23.880 30164 - 6429 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 7221 |
[補充2]
修改程式碼,在thread中檢查是否有正確的接收到message物件。SavingData.java的程式碼如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class SavingData2 implements Runnable { private final String TAG = getClass().getSimpleName(); Message msg; Thread myThread; private long counter; private static long threadCount = 0 ; public long getCounter() { return counter; } public static long getThreadCount() { return threadCount; } ReentrantLock lock = new ReentrantLock(); SavingData2(Message msg) { this .msg = msg; this .counter = threadCount++; Log.i(TAG, "Out1: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + counter++); myThread = new Thread( this ); myThread.start(); } @Override public void run() { lock.lock(); Log.i(TAG, "Out: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + counter++); SensingActivity.getDB().insert(msg); lock.unlock(); } } |
我分別在line 16跟25放一個Log來檢查物件,發現在建構子中的物件的確由傳遞進來,然而在run()執行緒中的物件則會變得不確定,如下面的log輸出,因此可能解決這個問題的方法是另外使用一個物件來存放message的內容,不要直接使用message物件。這算是系統的bug還是我的物件導向沒學好XD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 01 - 27 12 : 37 : 29.080 18151 - 18151 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 4 , msg.when = 1206254932 , msgCount = 0 01 - 27 12 : 37 : 29.080 18151 - 18151 /cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 4 , msg.when = 1206254932 , msgCount = 0 01 - 27 12 : 37 : 29.090 18151 - 18151 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 4 , msg.when = 1206254932 , msgCount = 1 01 - 27 12 : 37 : 29.090 18151 - 18151 /cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 4 , msg.when = 1206254932 , msgCount = 1 01 - 27 12 : 37 : 29.100 18151 - 18151 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 5 , msg.when = 1206254932 , msgCount = 2 01 - 27 12 : 37 : 29.100 18151 - 18151 /cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 5 , msg.when = 1206254932 , msgCount = 2 01 - 27 12 : 37 : 29.110 18151 - 18770 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 3 01 - 27 12 : 37 : 29.110 18151 - 18769 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 2 01 - 27 12 : 37 : 29.110 18151 - 18770 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 27 12 : 37 : 29.110 18151 - 18769 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 27 12 : 37 : 29.120 18151 - 18768 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 1 01 - 27 12 : 37 : 29.120 18151 - 18768 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 27 12 : 37 : 30.060 18151 - 18151 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 4 , msg.when = 1206255929 , msgCount = 3 01 - 27 12 : 37 : 30.060 18151 - 18151 /cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 4 , msg.when = 1206255929 , msgCount = 3 01 - 27 12 : 37 : 30.060 18151 - 18151 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 4 , msg.when = 1206255929 , msgCount = 4 01 - 27 12 : 37 : 30.060 18151 - 18151 /cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 4 , msg.when = 1206255929 , msgCount = 4 01 - 27 12 : 37 : 30.060 18151 - 18151 /cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 5 , msg.when = 1206255929 , msgCount = 5 01 - 27 12 : 37 : 30.060 18151 - 18151 /cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 5 , msg.when = 1206255929 , msgCount = 5 01 - 27 12 : 37 : 30.060 18151 - 18826 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 4 01 - 27 12 : 37 : 30.060 18151 - 18826 /cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01 - 27 12 : 37 : 30.060 18151 - 18827 /cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0 , msg.when = 0 , msgCount = 5 |