Я реализую пользовательскую печать документов с помощью платформы печати 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
Как использовать Android Print Framework в многопоточном приложении, если PrintedPdfDocument не является потокобезопасны ⇐ Android
Форум для тех, кто программирует под Android
1764340151
Anonymous
Я реализую пользовательскую печать документов с помощью платформы печати Android.
Использую ссылку на документацию Android в качестве ссылки: https://developer.android.com/training/printing/custom-docs
Я использую процесс PrintManager для отображения средства выбора печати, реализацию PrintDocumentAdapter, затем создание PDF-файла внутри onWrite() с использованием PrintedPdfDocument путем вызова startPage() и рисования содержимого. Canvas, вызов FinishPage() и, наконец, запись документа в ParcelFileDescriptor, переданный платформой.
В документации Android указано, что если работа внутри onWrite() не может быть завершена быстро, она может быть выполнена в рабочем потоке. Однако PrintedPdfDocument (и базовый PdfDocument) не является потокобезопасным и позволяет одновременно открывать только одну страницу. Это становится проблематичным в многопоточном приложении, где рендеринг страниц требует больших затрат и состоит из вычислений макета, генерации растровых изображений, формирования текста и других ресурсоемких операций, которые в идеале должны выполняться параллельно.
В моем приложении несколько фоновых задач генерируют данные, необходимые для рисования каждой страницы, но каждая страница по-прежнему требует обязательных вызовов startPage() и FinishPage(), оба из которых работают с объектом, не поддерживающим потокобезопасность. Из-за этого неясно, как правильно интегрировать логику параллельного рендеринга с однопоточным требованием PrintedPdfDocument.
Какова правильная модель потоков для использования Android Print Framework в этой ситуации? Как задачи фонового рендеринга должны безопасно взаимодействовать с onWrite(), если само создание PDF-файлов должно оставаться последовательным?
Подробнее здесь: [url]https://stackoverflow.com/questions/79832559/how-to-use-android-print-framework-in-a-multithreaded-app-when-printedpdfdocumen[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия