У меня есть проект, который имеет дело с RFID-картами. После нажатия на карту в RF Reader, он записывает данные и нуждается в повторном запуске RFCard Reader.Но моя проблема в том, что после того, как я нажал на карту, следующая карта, которая будет нажата, не может быть прочитана из-за того, что CallBack();
больше не запускается.
Я пробовал это, после 3-5 раз, считыватель остановился.
class myCallbackThread extends Thread{
@Override
public void run(){
try{
//my code of saving will be here...
myCallbackThread myCallbackThread = new myCallbackThread();
myCallbackThread.start();
}catch (Throwable e){
e.printStackTrace();
}
}
}
It Этот полный код является функцией CallBack();
.Моя проблема в том, как я могу вызвать его снова, чтобы повторить процесс после его успешного выполнения?
class CallBackThread extends Thread {
@Override
public void run() {
try {
RFCardInterface.waitForCardPresent(RFCardInterface.CONTACTLESS_CARD_MODE_AUTO, 1, -1);
if (RFCardInterface.isCallBackCalled &&
RFCardInterface.notifyEvent.eventID == RFCardInterface.CONTACTLESS_CARD_EVENT_FOUND_CARD) {
IDCatcher = StringUtility.ByteArrayToString(RFCardInterface.notifyEvent.eventData,
RFCardInterface.notifyEvent.eventData.length);
IDCatcher = IDCatcher.substring(9, 21).replace(" ", "");
Log.e("IDCatcher", IDCatcher);
EventBus.getDefault().post(new EBTest2());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Как мне добиться, чтобы сделать его неопределенным ?.Спасибо
РЕДАКТИРОВАТЬ Добавлен мой EBtest2()
@Subscribe(threadMode = ThreadMode.MAIN_ORDERED)
public void onEvent(EBTest2 ebTest2) {
Cursor c = dbhelper.getReadableDatabase().rawQuery("select is_arrived,is_closed from trans_settings order by _id desc limit 1", null);
if (c != null && c.moveToFirst()) {
try {
String is_arrived = c.getString(0);
String is_closed = c.getString(1);
if (is_arrived.equals("0") && is_closed.equals("0")) {
SearchEmp();
} else if (is_arrived.equals("1") && is_closed.equals("0")) {
SearchEmp_isArrived();
} else if (is_arrived.equals("1") && is_closed.equals("1")) {
SearchEmp_isClosed();
}
} catch (Throwable e) {
e.printStackTrace();
}
c.close();
}
}