в общем проблема похоже понятна, файл содержит мусор, который появился в результате неявных преобразований кодировки...
вот код (корявый конечно) :)
String load_url(String url){
try {
URL u = new URL(url);
URLConnection conn = u.openConnection();
BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
ну хз, должно же быть какое-то логическое объяснение?!
может нужны какие-то дополнительные права в манифесте?
хотя файл же записался...
путь был сформировал с помощью вызова getCacheDir
private static void setUpAlarm(final Context context, final Intent intent, final int timeInterval)
{
final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
final PendingIntent pi = PendingIntent.getBroadcast(context, timeInterval, intent, 0);
am.cancel(pi);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
final AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(System.currentTimeMillis() + timeInterval, pi);
am.setAlarmClock(alarmClockInfo, pi);
}
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
am.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeInterval, pi);
else
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeInterval, pi);
}
3(!) ТРИ различные способа установки алармманагера в зависимости от версии АПИ, в страшном кошмаре такое не приснится! кофейная гуща нервно курит в сторонке и отдыхает :)
cherepizza: под push вы имеете ввиду GPM (Google Push Messages) ? судя по статье https://habrahabr.ru/post/274169/ это та еще хрень, которая работает через пень колоду Денис Загаевский: да читать можно до посинения, но факт есть факт, вполне возможно, что такое поведение далеко не на всех устройствах и/или версиях андроида, но конкретно на моем устройстве это именно так.
В методах и конструкторе сервиса сделан вывод отладочной инфы в логи. И судя по логам после отработки сервиса он реально завершается (т.е. вызывается onDestroy и он пропадает из списка задач), но буквально через считанные секунды снова появляется, при этом в логах об нет никакой информации, как будто ни конструктор ни какой-либо другой метод не вызывается.
Денис Загаевский: сделал через WakefulBroadcastReceiver и получается забавная вещь, в методе onHandleIntent в конце используется SimpleWakefulReceiver.completeWakefulIntent(intent) (где-то в примере было) и после его вызова на несколько секунд исчезает процесс, но потом снова появляется (при этом в алармманагере интервал запуска стоит 5минут). Т.е. получается система по какой-то непонятной причине все равно перезапускает сервис независимо от алармманагера?!
Денис Загаевский: Нашел вот такой пример алармманагера https://github.com/commonsguy/cw-omnibus/tree/mast..., в принципе по смыслу подходит, но и тут все равно используется сервис IntentService, у которого срабатывает метод onHandleIntent с указанной периодичность. И опять же после убивания процесса сервис автоматически запускается.
Денис Загаевский: хм, дело в том, что приложение должно авто запускаться после загрузки и отслеживать "новости" без явного запуска приложения и умные люди посоветовали сервис Как в андроиде реализован механизм? А AlarmManager не обладает такой способностью?!
Не хотелось захламлять вопрос ненужными подробностями.
Но вкратце работа сервиса должна зависеть от того запущена активити или нет, если запущена, то сервис ничего не делает, а если не запущена, то делает полезную работу :) а конкретно с определенным интервалом опрашивает сервер и при необходимости формирует извещения.
Можно и посредник, только непонятно как это вообще будет/должно работать?! Собственно и так не понятно кто/где и в какой момент инстанцирует экземпляр сервиса и активити, а при появлении посредника вообще все становится еще непонятнее. Кто должен инстанцировать посредника? Пока единственным вариантом мне кажется это сохранение состояния активити в SharedPreference наверное топорно, но тут хоть понятны механизмы взаимодействия.
Ну вот еще к примеру приложение "гугл+" или "госуслуги" их никто не запускает, по крайней мере после перезагрузки, но они заразы такие постоянно висят с таскманагере и даже если их прибить, то все равно они снова появляются. Это сервисы?
GavriKos: все верно, приложение должно работать как бы в фоне, с некой периодичностью будет опрашивать сервер и в случае появления "новостей" выводить извещение об этом. Это нужно для проекта https://github.com/KRAndroidDevelopment/LizaAlert
хм, а если приложением является не клиент ВК, а к примеру календарь, никак не связанный с сетью?! т.е. должно быть нечто в приложении, что запускается либо (для проверки наличия события) с некой периодичностью либо запускается в конкретный назначенный момент, но без явного запуска приложения