Используйте ту же область из пользовательского интерфейса и фонового сервиса - PullRequest
0 голосов
/ 20 мая 2018

Если я пытаюсь использовать одну и ту же область из пользовательского интерфейса и фонового сервиса, я получаю эту ошибку:

05-20 14:39:35.016 11464 11464 F DEBUG   : Build fingerprint: 'google/sdk_google_phone_x86/generic_x86:7.1.1/NYC/4729347:userdebug/test-keys'
05-20 14:39:35.017 11464 11464 F DEBUG   : Revision: '0'
05-20 14:39:35.017 11464 11464 F DEBUG   : ABI: 'x86'
05-20 14:39:35.017 11464 11464 F DEBUG   : pid: 11427, tid: 11452, name: est.aps.tracker  >>> fr.test.aps.tracker <<<
05-20 14:39:35.019 11464 11464 F DEBUG   : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
05-20 14:39:35.019 11464 11464 F DEBUG   :     eax 00000000  ebx 00002ca3  ecx 00002cbc  edx 00000006
05-20 14:39:35.019 11464 11464 F DEBUG   :     esi 8977f978  edi 8977f920
05-20 14:39:35.019 11464 11464 F DEBUG   :     xcs 00000073  xds 0000007b  xes 0000007b  xfs 0000003b  xss 0000007b
05-20 14:39:35.019 11464 11464 F DEBUG   :     eip ae2f1424  ebp 8977f778  esp 8977f71c  flags 00200296
05-20 14:39:35.028 11464 11464 F DEBUG   :
05-20 14:39:35.028 11464 11464 F DEBUG   : backtrace:
05-20 14:39:35.028 11464 11464 F DEBUG   :     #00 pc ffffe424  [vdso:ae2f1000] (__kernel_vsyscall+16)
05-20 14:39:35.028 11464 11464 F DEBUG   :     #01 pc 0007a03c  /system/lib/libc.so (tgkill+28)
05-20 14:39:35.028 11464 11464 F DEBUG   :     #02 pc 00075885  /system/lib/libc.so (pthread_kill+85)
05-20 14:39:35.028 11464 11464 F DEBUG   :     #03 pc 0002785a  /system/lib/libc.so (raise+42)
05-20 14:39:35.028 11464 11464 F DEBUG   :     #04 pc 0001ee36  /system/lib/libc.so (abort+86)
05-20 14:39:35.030 11464 11464 F DEBUG   :     #05 pc 0046bab4  /data/app/fr.test.aps-1/lib/x86/librealm-wrappers.so (_ZN9__gnu_cxx27__verbose_terminate_handlerEv+452)
05-20 14:39:35.034 11464 11464 F DEBUG   :     #06 pc 00433b17  /data/app/fr.test.aps-1/lib/x86/librealm-wrappers.so (_ZN10__cxxabiv111__terminateEPFvvE+23)
05-20 14:39:35.034 11464 11464 F DEBUG   :     #07 pc 00433baf  /data/app/fr.test.aps-1/lib/x86/librealm-wrappers.so (_ZSt9terminatev+31)
05-20 14:39:35.034 11464 11464 F DEBUG   :     #08 pc 0046a73d  /data/app/fr.test.aps-1/lib/x86/librealm-wrappers.so (execute_native_thread_routine+141)
05-20 14:39:35.034 11464 11464 F DEBUG   :     #09 pc 00074fe2  /system/lib/libc.so (_ZL15__pthread_startPv+210)
05-20 14:39:35.034 11464 11464 F DEBUG   :     #10 pc 0002029e  /system/lib/libc.so (__start_thread+30)
05-20 14:39:35.034 11464 11464 F DEBUG   :     #11 pc 0001e076  /system/lib/libc.so (__bionic_clone+70)

Чтобы изолировать проблему, я создал небольшое приложение , состоящее из одной страницыи гибридный сервис.На этой странице есть две кнопки для остановки / запуска счетчика.Она также отображает список пользовательских объектов (в ListView).

Сервис отображает счетчик каждые 5 секунд в окне logcat.
(для его запуска требуется несколько секунд)

Я бы хотел, чтобы сервис изменял представление списка со значением счетчика в режиме реального времени.
Но я не могу одновременно использовать одну и ту же область из своего пользовательского интерфейса и сервиса.

Другими словами,Я не могу раскомментировать одновременно две строки, упомянутые ниже:

Enable/disable usage of realm by background service:  
Uncomment/comment await in StartTrack method of Tracker.cs file.

Enable/disable usage of realm by UI:  
Uncomment/comment await in OnAppearing method of ServicePage.cs file.

PS:
Адаптировать Constants.cs с вашим действительным адресом ROS, именем пользователя и паролем.

РЕДАКТИРОВАТЬ: я упростил код

...