Как использовать Android Print Framework в многопоточном приложении, если PrintedPdfDocument не является потокобезопасныAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как использовать Android Print Framework в многопоточном приложении, если PrintedPdfDocument не является потокобезопасны

Сообщение Anonymous »

Я реализую пользовательскую печать документов с помощью платформы печати Android.
Использую ссылку на документацию Android в качестве ссылки: https://developer.android.com/training/ ... ustom-docs
Я использую процесс PrintManager для отображения средства выбора печати, реализацию PrintDocumentAdapter, затем создание PDF-файла внутри onWrite() с использованием PrintedPdfDocument путем вызова startPage() и рисования содержимого. Canvas, вызов FinishPage() и, наконец, запись документа в ParcelFileDescriptor, переданный платформой.
В документации Android указано, что если работа внутри onWrite() не может быть завершена быстро, она может быть выполнена в рабочем потоке. Однако PrintedPdfDocument (и базовый PdfDocument) не является потокобезопасным и позволяет одновременно открывать только одну страницу. Это становится проблематичным в многопоточном приложении, где рендеринг страниц требует больших затрат и состоит из вычислений макета, генерации растровых изображений, формирования текста и других ресурсоемких операций, которые в идеале должны выполняться параллельно.
В моем приложении несколько фоновых задач генерируют данные, необходимые для рисования каждой страницы, но каждая страница по-прежнему требует обязательных вызовов startPage() и FinishPage(), оба из которых работают с объектом, не поддерживающим потокобезопасность. Из-за этого неясно, как правильно интегрировать логику параллельного рендеринга с однопоточным требованием PrintedPdfDocument.
Какова правильная модель потоков для использования Android Print Framework в этой ситуации? Как задачи фонового рендеринга должны безопасно взаимодействовать с onWrite(), если само создание PDF-файлов должно оставаться последовательным?

Подробнее здесь: https://stackoverflow.com/questions/798 ... pdfdocumen
Ответить

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

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

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

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

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