2013-07-12 3 views
0

есть ли какой-либо способ передачи большого количества данных в Android-сервис, который работает на другом процессе от основного действия? Данные для передачи - это массив байтов размером около 5 МБ. Как примечания, я не могу сохранить данные в файл для передачи, должен быть передан исключительно с помощью памяти или любым другим способом, который не сохраняется в файле, базах данных и т. Д.Android - передайте большое количество данных на обслуживание, запущенное на другом процессе

Я пробовал через AIDL , но, по-видимому, в Android под AIDL, доступные данные ограничены 1Mb. Также нарезка данных и передача их через куски не является вариантом. Должна быть одна транзакция. Я также пробовал Intents, но опять же те же ограничения от 500Kb до 1Mb.

Так что у меня заканчиваются идеи.

+0

Почему вы используете отдельный процесс в первую очередь? – CommonsWare

+0

По двум причинам, прежде всего, чтобы разгрузить работу, которая может потреблять основную кучу работы, а вторая потому, что пользователь может остановить основной процесс, покинув приложение, но обработка может еще не завершиться. Приложение может поставить в очередь несколько заданий, каждый из которых может занимать несколько секунд. Используя другой процесс, я имею преимущество в том, что у меня есть другая куча, которая не уменьшает один из основного действия, плюс я выгружаю всю работу в процесс, который может продолжать работать до завершения, не заставляя пользователя ждать каждого задания для завершения и даже разрешения выхода из приложения, если он захочет без необходимости ждать – PerracoLabs

+0

Вам не нужен отдельный процесс, чтобы «продолжить работу до завершения, не заставляя пользователя ждать завершения каждого задания и даже позволять выйти из приложение, если он хочет, не дожидаясь ». – CommonsWare

ответ

0

насчет общей ashmem памяти http://www.androidenea.com/2010/03/share-memory-using-ashmem-and-binder-in.html

файла памяти является ashmem обертки http://developer.android.com/reference/android/os/MemoryFile.html

Или вы можете попробовать открыть сокет или ServerSocket в службе и подключение к нему от вашей деятельности

http://developer.android.com/reference/java/net/ServerSocket.html

+0

. Второй вариант, файл памяти, похоже, является тем, что я ищу. – PerracoLabs

 Смежные вопросы

  • Нет связанных вопросов^_^