Напомним CallBack ();функция, когда нужно использовать - PullRequest
0 голосов
/ 19 октября 2018

Как я могу позвонить своему CallBack() снова, когда мне нужно его использовать?

В настоящее время я звоню своему CallBack(), выполняя это

CallBackThreadHome callBackThreadHome = new CallBackThreadHome();
    callBackThreadHome.start();

Исправьте меня, еслиЯ ошибаюсь, но он съест мое потребление памяти?. Потому что я получаю фатальную ошибку Fatal signal 11 (SIGSEGV) at 0x0000000b (code=1), thread 2347 (i.mikee.jti_pos). На нашем устройстве есть только 1 ГБ оперативной памяти, поэтому я очень осторожен со стороны потоков.

Это просмотр callBackThreadHome();

class CallBackThreadHome 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);
                IDCatcher = IDCatcher.replace(" ", "");

                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()) {
                    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();
                    }
                    c.close();
                }
            }
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
}

на Android Studio, там есть функция callBackThreadHome.run().Разве это не уместно?

1 Ответ

0 голосов
/ 19 октября 2018

Просто сохраните «CallBackThreadHome» в глобальной переменной, и вы сможете использовать ее в любое время.

«Питание» ОЗУ зависит не от системы потоков, а только от РАБОТЫ, которую вы делаете ВНУТРИ, однакообратный вызов не означает «многопоточность», а просто метод, который вызывается в определенное время из другого фрагмента кода.

Ошибка SIGSEGV имеет конкретное значение, но это другая история / вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...