Моя служба запускает действие следующим образом:
Intent intent = new Intent(context, CallMonitor.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
это происходит в CallMonitor.onCreate():
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
На большинстве устройств активность (вызванная из службы) будит устройство, включает экран и отображается.
Но, например, на Galaxy Tab 4 действие вызывается только в том случае, если экран уже включен. Если экран выключен и сервис вызывает активность, она отображается с задержкой — будет отображаться сразу после включения экрана.
В действии также есть голосовой вывод. Когда Galaxy S4 выключен, он не воспроизводится, а сразу после повторного включения экрана.
Какие-либо предложения? Я не хочу использовать WakeLock!