Приложение внезапно завершило работу, но только не у меня
- IlyaZh
- Сообщения: 32
- Зарегистрирован: 14 июл 2012, 09:52
- Откуда: Санкт-Петербург
- Контактная информация:
Приложение внезапно завершило работу, но только не у меня
Здравствуйте. Столкнулся со следующей проблемой. Сделал приложение - отправляю его друзьям, у которых версия андройда выше моей. У них приложение вылетает с ошибкой, а у меня почему-то работает. Как такое возможно?? Я вот даже не знаю в чём причина ошибки - у меня ведь всё норм, даже не отладить не как..
Re: Приложение внезапно завершило работу, но только не у мен
больше бы инфы для начала (что за приложение, какие версии дроида и т.д.)
и почему нельзя отладить? на эмуляторе вроде как можно эмулировать любую версию =)
и почему нельзя отладить? на эмуляторе вроде как можно эмулировать любую версию =)
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Приложение внезапно завершило работу, но только не у мен
Почему бы не взять одно из устройств друзей и попытаться отладить свое приложение на нем?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
- IlyaZh
- Сообщения: 32
- Зарегистрирован: 14 июл 2012, 09:52
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Приложение внезапно завершило работу, но только не у мен
Разобрался с проблемой. Отладить на устройствах друзей не могу, т.к. они живут за 100км, а из тех что рядом - андройдов нет.
Оказалось, что не хватало прав в манифесте. Но почему тогда у меня работало?? Чудеса..
Чёрт, а в эмуляторе закрвыается... Приложение работает на yandex map kit. Первый экран - заставка запускается, а тот, что отвечает за карту - сразу выкидывает ошибку.
Оказалось, что не хватало прав в манифесте. Но почему тогда у меня работало?? Чудеса..
Чёрт, а в эмуляторе закрвыается... Приложение работает на yandex map kit. Первый экран - заставка запускается, а тот, что отвечает за карту - сразу выкидывает ошибку.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Приложение внезапно завершило работу, но только не у мен
Андроид не гарантирует как оказалось полную обратную совместимость. Там не работают принципы Java "написано однажды-работает везде". Тому пример тот факт, что на версии <3 , можно в главном потоке UI делать подключение к интернету. а в версии >3 , правила изменились и такое уже сделать будет невозможно. Будет вылетать ошибка
Было еще что-то, не вспомню. Но такой момент не один в своём роде.
Могу дать совет в отлове непредвиденных ошибок. Создаём класс, расширяющий Thread.UncaughtExceptionHandler
далее в активности ли в другом необходимом месте вызываем
Такое дело нужно делать в каждом потоке, где надо отлавливать ошибки.
А так вообще тести в эмуляторе, получай ошибки и гугли на stackoverflow
Код: Выделить всё
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1077)
at java.net.InetAddress.lookupHostByName(InetAddress.java:477)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:277)
at java.net.InetAddress.getAllByName(InetAddress.java:249)
Могу дать совет в отлове непредвиденных ошибок. Создаём класс, расширяющий Thread.UncaughtExceptionHandler
Код: Выделить всё
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import android.location.LocationManager;
import android.util.Log;
import android.widget.Toast;
public class CustomExceptionHandler implements Thread.UncaughtExceptionHandler {
Thread.UncaughtExceptionHandler oldHandler;
private LocationManager locationManager;
private final int TIME_OUT_SEC = 10;
private File fileName=null;
public CustomExceptionHandler() {
oldHandler = Thread.getDefaultUncaughtExceptionHandler();
}
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
StackTraceElement[] result = throwable.getStackTrace();
String s="";
java.lang.StringBuilder sb = new StringBuilder();
sb.append("<Exception information="+throwable.getMessage()+" >");
sb.append("Exception line=");
for (int i = 0; i < result.length; i++) {
sb.append(result[i]+" ");
}
// тут sb записываем в файл, который потом и просим у друзей, в котором будет
// стектрейс ошибок
if(oldHandler != null) // если есть ранее установленный...
oldHandler.uncaughtException(thread, throwable); // ...вызовем его
}
}
Код: Выделить всё
Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler());
А так вообще тести в эмуляторе, получай ошибки и гугли на stackoverflow
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Приложение внезапно завершило работу, но только не у мен
И правильно сделали. UI поток не место для подобного. Жаль не сразу догадались.no-- писал(а):... на версии <3 , можно в главном потоке UI делать подключение к интернету. а в версии >3 , правила изменились и такое уже сделать будет невозможно. Будет вылетать ошибка
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Приложение внезапно завершило работу, но только не у мен
Нет, они это сделали не правильно. По той лишь причине что нужно держаться обратной совместимости. Можно сделать метод как Deprecated, и пусть народу уже сам думает и читает и принимает решение.
Re: Приложение внезапно завершило работу, но только не у мен
Существует мнение, что все, что ниже 4 было вообще как бы сумбурно и разрозненно, а с 4 вышло из стадии экспериментов и встало на путь размеренного развития с выкатом новой глобальной версии ~1 раз в год.
Сам, кстати, наткнулся на данный момент с невозможностью запустить свою отладочную утилитку на 4-й оси с каким-то странным исключением, которое после поиска оказалось как раз было введено в 4 версии что бы не позволять запускать "тяжелый" сетевой код в UI потоке
Сам, кстати, наткнулся на данный момент с невозможностью запустить свою отладочную утилитку на 4-й оси с каким-то странным исключением, которое после поиска оказалось как раз было введено в 4 версии что бы не позволять запускать "тяжелый" сетевой код в UI потоке
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Приложение внезапно завершило работу, но только не у мен
Я и говорю, жаль не сразу догадались. Если бы запрет был в самом начале, никто не жаловался.no-- писал(а):Нет, они это сделали не правильно. По той лишь причине что нужно держаться обратной совместимости. Можно сделать метод как Deprecated, и пусть народу уже сам думает и читает и принимает решение.
А если вдуматься, мера вынужденная. Гуглу нужно доказать, что Андроид на самом деле не такой уж и тормозной. Если отметить метод как Deprecated многие могу просто проигнорировать это предупреждение.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Приложение внезапно завершило работу, но только не у мен
А вы часто игнорируете методы, отмеченные как deprecated? Лично я таких людей не знаю.
На счет что они это делали тестировали до 4 версии... Ну не знаю, 4 года шоль понадобилось на тестирование. Многовато. Ладно, это всё не столь важно. Просто написал чтобы знали кто не знал что бывают такие нюансы =)
На счет что они это делали тестировали до 4 версии... Ну не знаю, 4 года шоль понадобилось на тестирование. Многовато. Ладно, это всё не столь важно. Просто написал чтобы знали кто не знал что бывают такие нюансы =)
Re: Приложение внезапно завершило работу, но только не у мен
Тут еще и производители андроид устройств тоже иной раз плюют на обратную совместимость. В частности после обновления оси до ICS на Samsung Galaxy S2 "отвалились" приложения использующие запись звонков с линии, хотя на старых версиях Android все шло на ура. Причем многие из этих приложений платные и без этого функционала они становятся бессмысленными, какого было пользователям и производителям такого ПО?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Приложение внезапно завершило работу, но только не у мен
Например, методы onCreateDialog и onPrepareDialog класса Activity являются Deprecated методами. Как много людей используют их?no-- писал(а):А вы часто игнорируете методы, отмеченные как deprecated? Лично я таких людей не знаю.
PS: Отсутствие поддержки записи тоже не баг а фитча Там какие то проблемы с законодательством.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Приложение внезапно завершило работу, но только не у мен
Честно говоря ни разу ими не пользовался =) Правда я пока молод в плане с андроидом. Но разве AlertDialog это не то, что это дело заменяет? Или это вообще разные вещи?
- IlyaZh
- Сообщения: 32
- Зарегистрирован: 14 июл 2012, 09:52
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Приложение внезапно завершило работу, но только не у мен
А какие методы рекомендуется использовать вместо них? Или вообще о них позабыть?KamiSempai писал(а):Например, методы onCreateDialog и onPrepareDialog класса Activity являются Deprecated методами. Как много людей используют их?
Re: Приложение внезапно завершило работу, но только не у мен
Да нет там никаких проблем, или эти проблемы надуманы. Во всяком случае официальных объяснений со стороны Samsung по этому поводу я не видел. То, что в некоторых странах запись запрещена это не повод чтобы отключать такую возможность на всех аппаратах, можно было, скажем, сделать это как-то опцией в настройках, при включении выдавать предупреждение о возможном нарушении законов.KamiSempai писал(а): PS: Отсутствие поддержки записи тоже не баг а фитча Там какие то проблемы с законодательством.
Производители кухонных ножей, бейсбольных бит, утюгов, паяльников и т.п. не несут же никакой ответственности, если их изделия использовались для преступных действий.
ЗЫ С таким успехом можно было вообще всякую голосовую и видеозапись убрать, ведь телефон можно использовать для подслушивания и подглядывания, а это будет, типа, вторжение в частную жизнь, что в некоторых странах запрещено
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Приложение внезапно завершило работу, но только не у мен
Гугл рекомендует использовать DialogFragment. Он есть в android.support.v4.app.IlyaZh писал(а):А какие методы рекомендуется использовать вместо них? Или вообще о них позабыть?
Чую, скоро к этому и придем.AndreyI писал(а):ЗЫ С таким успехом можно было вообще всякую голосовую и видеозапись убрать, ведь телефон можно использовать для подслушивания и подглядывания, а это будет, типа, вторжение в частную жизнь, что в некоторых странах запрещено
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Приложение внезапно завершило работу, но только не у мен
В принципе, наверное и с ними можно. Вот наверное только в этом загвоздка
For SDK version < 8, if you return null in onCreateDialog you get Exception java.lang.IllegalArgumentException.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Приложение внезапно завершило работу, но только не у мен
Думаю после этого станет понятно, что к чему: http://startandroid.ru/uroki/vse-uroki- ... ttons.htmlno-- писал(а):Честно говоря ни разу ими не пользовался =) Правда я пока молод в плане с андроидом. Но разве AlertDialog это не то, что это дело заменяет? Или это вообще разные вещи?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.