2013-11-21 3 views
4

Я работаю с тестовым приложением для связи между телефоном android (Galaxy SIII, android 4.1.2) и arduino, используя MicroBridge (через adb). Приложение android выполняет всю работу с помощью ndk с помощью java-стороны только для начала работы и отображения некоторых данных.Android, убивающий мое приложение

Все отлично работает в течение 30-60-х годов, но затем мое приложение внезапно закрывается, и я не могу понять, почему. Глядя на вывод logcat, это не крушение; вещи закрываются обычным способом. Android, похоже, просто говорит моему приложению закрыть. Единственное, что я могу найти, это последовательность строк logcat всегда прямо перед закрытием моего приложения.

D/MTPRx (29019): DRIVER_TIME_OUT 60s lapsed 
D/MTPRx (29019): still no open session command from host, so toast 
E/MTPRx (29019): started activity for popup 

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

Кто-нибудь знает, что здесь происходит и что еще более важно, как закрыть приложение?

UPDATE: Просто немного больше информации от дальнейших испытаний:

  1. Ограничение Arduino просто опрашивают ADB интерфейс не решает проблему.
  2. Если я прокомментирую ардуино, чтобы в основном иметь пустой эскиз (т. Е. Никаких попыток связи) проблема исчезает.
  3. Подключение к ПК (с уже запущенным сервером adb) вместо arduino показывает ту же проблему.
  4. Такая же проблема возникает на Galaxy S4 (Android 4.3), подключенной к ПК
+0

Вы хранить большие данные в приложении? Например, статический список <...> ...? – artemiygrn

+0

Нет, ничего подобного – ryan0270

ответ

0

Я ударил эту проблему недавно и думал, что я поделиться тем, что я нашел, так как это единственное место, которое показывает вверх при поиске этой проблемы в Google.

Моя установка: камера Samsung Galaxy с Android 4.1.2, подключенная к плате IOIO. Моя проблема заключалась в том, что через 60 секунд после подключения устройства к плате IOIO моя деятельность переднего плана была приостановлена, а затем немедленно возобновлена. В журнале Adb содержались те же строки из MTPRx, что и в исходном вопросе. Это было проблемой для меня, потому что моя активность заключалась в записи видео, и я остановил запись в обработчике onPause.

Оказывается, MRPRx является демоном, который обрабатывает протокол MTP. По-видимому, плата IOIO не делает попыток говорить с MTP, и это отбрасывает демона. Это, в свою очередь, приводит к приостановке текущей работы переднего плана.

Я не нашел способа предотвратить это, но поскольку в современных версиях Android приостановленное состояние активности не является гибким, я решил работать с ним, переместив все с обработчика onPause на onStop , Это работало отлично для меня, но, возможно, не подходит в каждом случае.

Эти данные не полностью объясняют все симптомы, описанные TS, поэтому, возможно, происходит что-то еще.

1

проверить, если Libc выбрасывает любое исключение, это может быть сбой в вас НДК код, который закрывает приложение

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