Хотелось бы узнать, что использовать для того, чтобы приложение могло бы работать в режиме "сна" (при нажатии кнопки выключения)?
Пробовал использовать класс Service, но при выключении экрана он "глохнет". Знаю, что не достает какой-то важной части (в плане разрешения доступа или чего-то подобного), но сам не смог найти.
Собственно код:
public class MyService extends Service {
final String LOG_TAG = "myLogs";
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
super.onCreate();
Log.d(LOG_TAG, "onCreate");
}
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(LOG_TAG, "onStartCommand");
someTask();
return super.onStartCommand(intent, flags, startId);
}
public void onDestroy() {
super.onDestroy();
Log.d(LOG_TAG, "onDestroy");
}
public void someTask() {
......
}
}
В в Main-е вызываю сервис при открытии приложения:
public class MainActivity extends AppCompatActivity {
final String LOG_TAG = "myLogs";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startService(new Intent(this, MyService.class));
}
Ответ
И это правильно. Так и задумано, чтоб при заблокированном экране батарея устройства не разряжалась.
Если, всё же, хотите, то используйте WakeLock и PowerManager
PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyWakeLock");
wakeLock.acquire();