그래서 화면이 꺼지고 50 초 후에 startDiscoveryProcess()
을 호출하고 startDiscoveryProcess()
이 50 초마다 호출하는 중입니다. 그 과정을 멈추는 방법? Intent.ACTION_SCREEN_ON
을 수신하고 화면이 켜져있는 경우 브로드 캐스트를 보내 검색을 다시 시작하지 않습니다.
서비스의
onCreate()
에서
boolean screenOn = true;
BroadcastReceiver screenReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF) || intent.getAction().equals("MY_ACTION_WHEN_SCREEN_IS_OFF")) {
screenOn = false;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// start discovery process again
startDiscoveryProcess();
}
}, 50000);
} else if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
screenOn = true;
}
}
};
, 수신기를 등록 :
IntentFilter filters = new IntentFilter();
filters.addAction(Intent.ACTION_SCREEN_OFF);
filters.addAction(Intent.ACTION_SCREEN_ON);
filters.addAction("MY_ACTION_WHEN_SCREEN_IS_OFF");
registerReceiver(screenReceiver, filters);
그럼 그냥 우리가 위라고하는 방법이 있는지 확인하십시오 :
void startDiscoveryProcess() {
//start discovery process
// do something...
// then send the broadcast yourself to do this every 50 seconds because discovery stops at 60 seconds
if(!screenOn) {
Intent intent = new Intent("MY_ACTION_WHEN_SCREEN_IS_OFF");
sendBroadcast(intent);
}
}
을