FLAG_TURN_SCREEN_ON не всегда работает

я запускаю действие из BroadcastReceiver, которое запускается аларамом (тип RTC_WAKEUP). в onCreate этого действия я добавьте эти флаги

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
    WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
    WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
    WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON        
);

проблема в том, что иногда (примерно в 10% случаев) экран не включается, будильник срабатывает правильно (т.е. звук уведомления, который также срабатывает в onReceive() приемника, тогда если я нажимаю кнопку питания телефона, экран включается, показывая мою активность, и мгновенно выключается. после этого кнопка питания работает хорошо. это происходит на Android 2.3.7, и вот метод onReceive()

@Override
public void onReceive(Context context, Intent intent) {
    m_Context = context;

    Bundle extras = intent.getExtras();
    final int id = extras.getInt("timer_id");

    Intent activityIntent = new Intent(m_Context, MyActivity.class);
    activityIntent.putExtra("timer_id", id);
    activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    m_Context.startActivity(activityIntent);

    // and now load the alarm sound and play it for the desired time
    showFinishedNotification();
}

i хотел бы избежать использования PowerManager, так как для этого требуется разрешение, а флаги являются предпочтительным способом.

в чем может быть проблема? logcat не показывает никаких проблем...

10
задан shelll 31 March 2012 в 17:30
поделиться