Я разрабатываю приложение для Android, которое заставляет ОС замораживать.Как приложение может заморозить ОС Android
Мой вопрос довольно прост, но после длительных поисков я подошел не ближе к ответу.
Вопрос в том, как приложение, изолированное от песочницы, заставляет замораживать все ОС Android (4.0.4, 4.1.1, 4.1.2)?
В частности, вся ОС замерзает. Никакой ловушки, никакого адда, ничего! Он так же заморожен, как и ОС. Это устройство Samsung Galaxy Tab 2. Приложение использует UsbManager
и библиотеку от usb-serial-for-android project. Хотя библиотека может использовать NDK, мое приложение не работает. По сути, приложение обменивается информацией с приставкой, получая данные и отправляя последовательные команды. Это делается на рабочем потоке, который выбывает таким образом:
try {
thread.interrupt();
thread.join();
while(thread.getState() != Thread.State.TERMINATED){
// wait until thread finishes
}
} catch (InterruptedException e) {
e.printStackTrace();
}
Это все работает нормально, то есть до тех пор, замораживание не происходит - когда я отключаю USB-кабель или инструктировать объект библиотеки отключить. В любом случае, вся ОС становится нестабильной и немедленно замерзает или после подключения USB снова (плата или компьютер). Я опубликовал эту проблему с замораживанием в проекте usb-serial-for-android, но пока не получил никаких комментариев. Я считаю, что следую надлежащим протоколам при отключении USB.
Я понимаю, что многие вещи могут пойти не так - мое приложение может разрушить et. и др. Но опять же, как приложение с песочницей разбивает ОС - оно не кажется очень изолированным, если оно может это сделать.
UPDATE
У меня после долгих экспериментов установлены, что путь удаления thread.interrupt();
линии, что она работает без сбоев приложения или замораживаний ОС. Он по-прежнему замораживает ОС, если USB отключен от сети, не отключая его.
Я все еще хочу понять, как изолированное приложение может заморозить всю ОС. Здесь есть комментарии, которые ускользают от ответа, но не являются ответом в одиночку.
замораживание, так как вы даже не можете вернуться домой, используя домашнюю кнопку? вы используете эмулятор или настоящее устройство? если вы использовали устройство, что это за устройство? если он подключен к компьютеру, что сказал логарифм? что происходит, что может вызвать замораживание? – Keale
Много вещей. Вы должны быть более конкретными. –
Я бы искал жесткую петлю с неудовлетворенными условиями завершения или поведение, такое как рекурсивный перезапуск.Поскольку вы * (конечно) * используете исходный контроль, откатываетесь до последней известной рабочей версии и делаете шаг вперед, чтобы найти, какие изменения вызывают проблему. – andy256