Pyjnius не нашел класс «org.kivy.android.GenericBroadcastReceiver» при использовании потоковPython

Программы на Python
Ответить
Anonymous
 Pyjnius не нашел класс «org.kivy.android.GenericBroadcastReceiver» при использовании потоков

Сообщение Anonymous »

Я разрабатываю приложение, которое обнаруживает устройства Bluetooth с помощью функции обнаружения устройств, в частности, эта функция использует широковещательный приемник. Чтобы ускорить работу, я хотел объединить эту функцию в поток, чтобы сделать ее быстрее и не запаздывать пользовательский интерфейс в Kivy, что происходит в MainThread. Я застрял на этом некоторое время, и у меня кончается терпение. Я не новичок в Python, но это мой первый по-настоящему большой проект. Я не понимаю Java, но могу понять.

Код: Выделить всё

def example(self, *args):
# [...] code

from android.broadcast import BroadcastReceiver
self.broadcast_receiver = BroadcastReceiver(self.bluetooth_devices, actions=[self.BluetoothDevice.ACTION_FOUND])
self.broadcast_receiver.start()

# [...] more code
self.broadcast_receiver.stop()

def bluetooth_devices(self, context, intent):
device = cast(self.BluetoothDevice, intent.getParcelableExtra(self.BluetoothDevice.EXTRA_DEVICE))

# [...] code that finds detected devices
Я точно знаю, что обратный вызов в BroadcastReceiver не является проблемой, поскольку он работает нормально, когда пример функции не является многопоточным. Однако как только мы помещаем его в поток, он выдает следующее исключение:

Код: Выделить всё

JVM exception occurred: Didn't find class
"org.kivy.android.GenericBroadcastReceiver" on path: DexPathList[[directory "."],
nativeLibraryDirectories=[/system/lib64,
/system/lib64]]
java.lang.ClassNotFoundException
Насколько я понимаю, это должно означать, что когда функция, состоящая из BroadcastReceiver, является многопоточной, она потенциально теряет доступ к классу, к которому ей необходим доступ для запуска. Если да, то есть ли решение этой проблемы?
Я также знаю, что BroadcastReceiver имеет HandlerThread.

Подробнее здесь: https://stackoverflow.com/questions/792 ... when-using
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»