- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个旧版 VoIP 应用程序,我想为其提供 Android 的新打瞌睡和待机模式支持。我有自己的消息传递/信号机制,我无法使用 Android 的 GCM 功能。文档指出,将应用列入白名单将允许使用自己的信号机制并使应用在打瞌睡模式下保持 Activity 状态。
我目前还使用 setExtract()
和 setRepeating()
生成 keepAlive 警报,以保持 XMPP 的持续连接。如果我为较新的版本添加 setExactAndAllowWhileIdle
,它表示 - 警报最多每 15 分钟触发一次。但是我需要每 12 秒间隔生成 1 个。我浏览了 Android 文档,SO 中的许多线程并找到了 an article在上面。通过将应用程序列入白名单并使用 AlarmManager
的新 API,我似乎无法完全实现我想要实现的目标。
我该怎么做才能像以前一样保持我的功能?在休眠和待机模式下保持应用程序 Activity ,以 12 秒间隔生成警报警报以保持连接 Activity 并保持网络连接打开?
最佳答案
通过禁用电池优化将应用程序列入白名单可使应用程序始终保持 Activity 状态。
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
String packageName = getPackageName();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (!pm.isIgnoringBatteryOptimizations(packageName)) {
Intent intent = new Intent();
intent.setAction(android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
}
}
Android list :
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
尽管新的 AlarmManager
API setExactAndAllowWhileIdle
未按要求在十二秒间隔内被调用。解决方案是——我们使用之前的 JNI 代码,我们通过使用定时器线程以十二秒的间隔发送保持 Activity 警报来发送保持 Activity 状态。由于应用程序处于 Activity 状态,因此无论警报是否工作,计时器线程都将处于 Activity 状态。
我的应用有一个非常复杂的要求,我无法使用 GCM 高优先级消息。但大多数 VoIP 应用程序(如 Skype)不会禁用电池优化,而是使用 GCM 在休眠模式下发送通知/消息。
关于android - VoIP 应用程序的打瞌睡和待机模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34263350/
如何读取操作系统消息? Java 是否能够监听来自 Java API 的操作系统消息? Hibernate 声明,当操作系统(在我的例子中是 Windows)进入待机状态时,我希望收到通知。请建议一个
如何使用 C/C++ native 代码以编程方式告诉 Windows XP 切换到待机模式? 最佳答案 Win32 API 中的一个可能函数是 SetSuspendState: SetSuspend
这里对linux 的几个命令整理下,有:休眠,挂起,待机,关机等几个命令的区别及如何实现。 休眠是一种更加省电的模式,它将内存中的数据保存于硬盘中,所有设备都停止工作。当再次使用时需按开关机键,机
我正在制作一个客户端-服务器应用程序,所以我需要关闭远程电脑静默 ..我在命令提示符关闭/? .. 但我仍然不知道执行以下命令的正确参数。 关机 重启 休眠 待命 注销 锁定(切换用户) 那么我如何在
我是一名优秀的程序员,十分优秀!