Android, снимающий скриншот с MediaProjectionManager, OnImageAvailable не запускается

Технически это проблема распределения памяти, однако здесь есть еще два практических аспекта. Он имеет отношение к двум вещам: 1) Область, когда вы определяете объект без указателя, вы больше не сможете получить к нему доступ после того, как блок кода он определен, тогда как если вы определяете указатель с «новым», тогда вы можно получить доступ к нему из любого места, где у вас есть указатель на эту память, пока вы не назовете «удалить» на том же указателе. 2) Если вы хотите передать аргументы функции, которую вы хотите передать указателю или ссылке, чтобы быть более эффективными. Когда вы передаете объект Object, объект копируется, если это объект, который использует большую часть памяти, это может быть потребляемое ЦП (например, вы копируете вектор, полный данных). Когда вы передаете указатель, все, что вы передаете, это один int (в зависимости от реализации, но большинство из них один int).

Кроме этого вам нужно понять, что «новый» выделяет память в куче, которая должна быть освобожденным в какой-то момент. Когда вам не нужно использовать «новый», я предлагаю вам использовать обычное определение объекта «в стеке».

1
задан Eduards Spāģis 13 July 2018 в 08:34
поделиться

1 ответ

Я думаю, вы должны установить разные FLAGS. Вы сообщаете MediaProjection, чтобы показывать ТОЛЬКО СОБСТВЕННЫЙ СОДЕРЖАНИЕ, но вы ничего не рисуете на его поверхности. Чтобы сделать снимок экрана, вы должны ЗАПИСАТЬ РАЗЛИЧНЫЙ ДИСПЛЕЙ, используя флаг «DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR».

0
ответ дан emandt 17 August 2018 в 13:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: