Заголовок лучше придумать не смог.
Есть такой метод getActivePrintJobs()
https://android.googlesource.com/platform/prebuilt...
в котором первой же строкой throwIfNotCalledOnMainThread();
И есть некоторое количество ANR
"main" tid=1 Native
#00 pc 0x00000000000d1214 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#01 pc 0x000000000008b6b0 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+132)
#02 pc 0x000000000005a398 /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+244)
#03 pc 0x000000000005b284 /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+60)
#04 pc 0x000000000005b028 /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+180)
#05 pc 0x000000000004ef60 /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+72)
#06 pc 0x000000000014ea3c /system/lib64/libandroid_runtime.so (android_os_BinderProxy_transact(_JNIEnv*, _jobject*, int, _jobject*, _jobject*, int)+152)
at android.os.BinderProxy.transactNative (Native method)
at android.os.BinderProxy.transact (BinderProxy.java:511)
at android.printservice.IPrintServiceClient$Stub$Proxy.getPrintJobInfos (IPrintServiceClient.java:403)
at android.printservice.PrintService.getActivePrintJobs (PrintService.java:350)
at ru.a402d.rawbtprinter.printservice.RawBtService.findJobById (RawBtService.java:395)
at ru.a402d.rawbtprinter.printservice.RawBtService$MyHandler.handleMessage (RawBtService.java:220)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7397)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:935)
В консоле есть совет, который звучит как издевательство
Длительность вызова механизма Binder трудно прогнозировать. Она может зависеть не только от сложности самого вызова, но и от периодически возникающих факторов, таких как конфликты блокировок на сервере. Работать с вызовами механизма Binder нужно так же, как с операциями ввода-вывода, и по возможности не использовать их в основном потоке. Если это все же необходимо, применяйте средства инструментирования и отслеживайте выполнение таких вызовов, чтобы определять причины замедления работы.
Только забить ? Или что-то реально придумать ?