#java #android
#java #Android
Вопрос:
У меня есть TextView с довольно длинным документом в нем (~ 1800 строк, 70 тыс. символов). Для обеспечения форматирования в документе применено несколько интервалов. Все это работает довольно хорошо.
Однако при редактировании текста я периодически получаю следующую ошибку:
E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 119652)
E/AccessibilityManager: Error during sending EventType: TYPE_VIEW_TEXT_SELECTION_CHANGED; EventTime: 67446779; PackageName: <package name>; MovementGranularity: 0; Action: 0; ContentChangeTypes: []; WindowChangeTypes: [] [ ClassName: android.widget.EditText; Text: [
<ENTIRE CONTENTS OF DOCUMENT>
]; ContentDescription: null; ItemCount: 78607; CurrentItemIndex: -1; Enabled: true; Password: false; Checked: false; FullScreen: false; Scrollable: false; BeforeText: null; FromIndex: 78585; ToIndex: 78585; ScrollX: 0; ScrollY: 0; MaxScrollX: 0; MaxScrollY: 0; ScrollDeltaX: -1; ScrollDeltaY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0
android.os.DeadObjectException: Transaction failed on small parcel; remote process probably died
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:540)
at android.view.accessibility.IAccessibilityManager$Stub$Proxy.sendAccessibilityEvent(IAccessibilityManager.java:580)
E/AccessibilityManager: at android.view.accessibility.AccessibilityManager.sendAccessibilityEvent(AccessibilityManager.java:606)
at android.view.ViewRootImpl.requestSendAccessibilityEvent(ViewRootImpl.java:8618)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.ViewGroup.requestSendAccessibilityEvent(ViewGroup.java:1094)
at android.view.View.requestParentSendAccessibilityEvent(View.java:8333)
at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:8326)
at android.view.View.sendAccessibilityEventUnchecked(View.java:8297)
at android.widget.TextView.sendAccessibilityEventUnchecked(TextView.java:12217)
at android.view.View.sendAccessibilityEventInternal(View.java:8274)
at android.widget.TextView.sendAccessibilityEventInternal(TextView.java:12206)
at android.view.View.sendAccessibilityEvent(View.java:8238)
at android.widget.TextView.onSelectionChanged(TextView.java:10488)
Иногда это также приводит к сбою приложения.
Насколько я могу судить, это вызвано тем, что код службы доступности пытается отправить много данных как часть намерения.
Может кто-нибудь рассказать о том, как я мог бы это предотвратить. Я знаю, что мог бы просто заблокировать запуск кода доступности (т. Е. Переопределить метод в TextView), Но я бы предпочел не мешать пользователям, которые полагаются на доступность.
Комментарии:
1. Вы можете попробовать сделать это таким образом android.jlelse.eu/… Огромный текст оптимизирован не очень хорошо, поэтому вам следует использовать некоторые хитрости, чтобы улучшить его визуализацию и восприятие
2. @frANTicBee Это может работать для текстового представления, доступного только для чтения, но не для редактируемого текстового представления. Приложение, над которым я работаю, по сути, представляет собой текстовый редактор.
3. Если я сделаю что-то подобное — я хотел бы сделать их просто текстом и превратить его в EditText, только нажав на абзац. кажется, что пользователю не нужно видеть все 1800 строк одновременно и исправлять их все подряд