Опитваме се да внедрим таймер за собствен код в android. Таймерът трябва да работи точно по време на режим на събуждане и заспиване. Когато таймерът изтече, нашият собствен код ще изпрати DPD (Dead peer detection) съобщения до мрежата. Опитахме следните подходи.
Използване на API на android framework за мениджър на аларми в кода на потребителското пространство и по-долу са резултатите:
- This doesn't give the accurate results even during wake state for small timers like 2s,3s,5s.
- Не работи точно и за режим на заспиване.
Опитахме се да използваме таймера на ядрото в кода на пространството на ядрото и по-долу са резултатите:
- Works perfectly for wake state.
- Но таймерите за състояние на заспиване изобщо не изтичат. Когато събудим устройството ръчно, тогава таймерите изтичат. Така че, в заключение, таймерите на ядрото не работят по време на състояние на заспиване.
3. Използване на wake lock *Опитваме се да избегнем използването на wake lock, тъй като може да причини значителни проблеми с производителността
P.S - Реализацията на Ipsec с отворен код strongswan изпраща DPD съобщенията точно време дори по време на режим на заспиване. Но изглежда, че strongswan не използва заключване за събуждане, така че все още се опитваме да разберем как работи по време на режим на заспиване. Всеки, който търси отговор на това въпрос може да искате да разгледате този код.
Може ли някой да предложи нещо за разрешаване на този проблем.