(2017-03-14, 22:03:49)niksanvn написа: кажи за някое не популярно приложение ,което да прави проблем, за да пробвам , че ми стана любопитно.
Мерси колега
Има надежди, защото на картинката виждам, че в 7.0 приложението е по-малко и се казва "Power GeniUS", вместо "Power GeniE". По-малкия размер ме обнадеждава, че може би ще прави по-малко глупости
Приложение - примерно GTasks, което даже не може да се каже, че не е популярно, защото има над 1млн. изтегляния. Това е приложение за работа със задачи, може да работи както с gmail, така и локално. Аз го ползвам от години в локален режим, не му трябва мрежа, за да работи. Единствено на телефони хуавей имам проблем, че не ми звъни навреме. В един момент се ядосах и реших да погледна в системния лог какво става. Gtasks, както и всяко нормално приложение, което иска да показва нотификации, или да прави нещо друго в някакво зададено време, използва AlarmManager. Проблемът се получава, когато някоя от алармите на gtasks сработи и в този момент по някаква причина няма мрежа (например човек е в чужбина и си е спрял интернета временно). Гениалният power manager на хуавей казва следното в лога:
ash: org.dayp.gtasks keeps in H for no NET!
И в този момент пренасочва следващите аларми на GTasks с 12 часа по-късно от оригинално зададеното им време. Да де, ама това приложение по никакъв начин не зависи от мрежата, за да му прави този номер и въобще е тотална глупост да се приема, че на едно приложение не му трябват аларми, защото няма мрежа.
Експериментът е много прост: инсталираме gtasks, пускаме го с локален акаунт, въвеждаме 2 задачи - едната с напомняне за след 10 мин., втората за след 30 мин., след което спираме WiFi и мобилните данни и оставяме телефона. Резултат: първото напомняне сработва, а второто не. Ако имаме достатъчно търпение, ще установим, че следващата аларма идва с 12ч закъснение. Може и с adb да се провери и да се види, че ще стане така.
Иначе, аз също разработвам едно приложение, което прави разни работи във фонов режим. Само на хуавея не работи както трябва и причината отново се оказа в тения power manager. Въобще, когато нещата опрат до работа във фонов режим, нищо не работи както е документирано от google - процесите се хибернират по всякакво време (такова нещо в андроид по принцип няма), игнорират се WakeLocks дори когато устройството не е в doze режим и приложението е в т.нар. whitelist. Да не говорим, че power manager-ът решава как да се държи с едно приложение дори по това как се казва. Примерно - направих една малка тестова програмка с име "alarmtest". И какво да видя в лога:
alarmtest is alarm app, can be hibernated!
И бам - хибернация по средата на изпълнявани операции и при активен WakeLock. Същото това приложение като му сменя името на "alabala", започва се държи по коренно различен начин. Въобще, голяма химия и тотална непредвидимост какво може да очаква човек.