Я разрабатываю приложение, в котором мне нужно отправлять и получать пакеты в фоновом режиме. Но я обнаружил, что когда экран отключается, CPU также отключается. Поэтому я нашел в Android Developers, что я должен использовать блокировку от wake и wifi, чтобы позволить процессору работать, если экран погаснет. Это решение работает для других устройств, таких как LG Optimus One, но не для Samsung Galaxy Tab. Когда это устройство отключается, я не могу получать больше пакетов (UDP) и магически, когда я нажимаю кнопку питания для повторного включения экрана, я перезапускаю, чтобы принимать пакеты. В моем коде я вызываю:
powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_W AKE_LOCK, "TAG");
то
wakeLock.acquire();
Я думаю, что это ошибка Samsung, но я не уверен в этом, и если кто-то может дать мне какой-то намек, я бы очень признателен.
P.S. Мне нужна помощь в программировании... Я уже знаю, что если я изменю некоторые ручные настройки, чтобы не закрывать экран, это будет работать. Но я разрабатываю приложение, и мне нужен код.
Вы должны использовать PARTIAL_WAKE_LOCK
в вашем случае.
Я не уверен, почему SCREEN_DIM_WAKE_LOCK
недостаточно (не нашел никакой документации, которая это оправдывала), но PARTIAL_WAKE_LOCK
работал отлично для меня в подобном сценарии.
В качестве другого варианта вы можете использовать WifiLock
. Но вам нужно быть в курсе, поскольку ваше сетевое соединение может быть 2G или 3G, а не только Wi-Fi. Таким образом, вы не должны удерживать блокировку Wi-Fi, когда на самом деле используете 3G/2G/и т.д.
Вы также можете проверить расширенные настройки WIFI. В настройках - настройках WIFI вы можете нажать клавишу меню, щелкнуть расширенный значок и проверить значение для политики WIFI Sleep. Один из вариантов: "Когда экран выключается".