gpt4 book ai didi

Android、互联网和 sleep

转载 作者:行者123 更新时间:2023-11-29 00:26:43 26 4
gpt4 key购买 nike

所以我有一个音乐应用程序可以持续从服务器下载数据并在手机上播放。

问题:几分钟后音乐停止,显然是因为 Android 进入休眠状态并停止所有数据传输。连接甚至没有关闭,阅读线程只是暂停了。仅供引用,我正在以前台模式运行的服务中运行它。我还获得了一个PARTIAL_WAKE_LOCK

然而,partial wake lock只是防止CPU进入休眠,而不是网络连接。解决方案似乎是获取一个 FULL_WAKE_LOCK,它可以工作,但有丑陋的副作用,即明亮且耗电的屏幕会一直亮着。

似乎主要的音乐应用程序(如 Pandora)都在做同样的事情。

那么问题来了:有没有更好的方法让 Android 保持互联网连接?是否有某种方法/解决方法来实现 INTERNET_WAKE_LOCK

最佳答案

有两个东西 weak lock 和 wifimanager 你也可以使用任何一个来防止进入休眠模式

PowerManager pm;
PowerManager.WakeLock wakeLock, wakeLock_deamScreen,wakeLock_Full_wake_lock;
WifiLock lock;
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"SleepMode by pressing Power Button");
wakeLock.acquire();
wakeLock_deamScreen = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK| PowerManager.ON_AFTER_RELEASE| PowerManager.ACQUIRE_CAUSES_WAKEUP,"Screen Deam or screen stays on for a little longer");
wakeLock_deamScreen.acquire();
wakeLock_Full_wake_lock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK,"");
wakeLock_Full_wake_lock.acquire();

ComponentName receiver = new ComponentName(this,EyeSpyliteActivity.class);
PackageManager packagemanager = getPackageManager();
packagemanager.setComponentEnabledSetting(receiver,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
lock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL, "LockTag");
lock.acquire();

不要忘记在销毁时释放它

@Override
protected void onDestroy() {
lock.release();
wakeLock.release();
wakeLock_deamScreen.release();
wakeLock_Full_wake_lock.release();
}

关于Android、互联网和 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18840622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com