Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android上的本机方法如何与电源管理生命周期交互?_Java_Android_C_Sockets_Java Native Interface - Fatal编程技术网

Java Android上的本机方法如何与电源管理生命周期交互?

Java Android上的本机方法如何与电源管理生命周期交互?,java,android,c,sockets,java-native-interface,Java,Android,C,Sockets,Java Native Interface,当本机方法运行时,Android是否可能进入深度睡眠(CPU睡眠) 如果是, 本机方法能否使用C调用获取唤醒锁 当本机方法阻止套接字读取数据时,手机会自动唤醒吗 当select或epoll上有本机方法阻止的可用数据时,手机会自动唤醒吗 如果Android在本地方法调用中不考虑睡眠,我如何确保手机可以进入睡眠状态,直到在本地代码中创建的一个套接字准备好接收数据? 一些背景: Android网站的建议是“Android不会挂起执行本机代码的线程。如果正在进行垃圾收集,或者调试器发出了挂起请求,A

当本机方法运行时,Android是否可能进入深度睡眠(CPU睡眠)

如果是,

  • 本机方法能否使用C调用获取唤醒锁

  • 当本机方法阻止套接字读取数据时,手机会自动唤醒吗

  • 当select或epoll上有本机方法阻止的可用数据时,手机会自动唤醒吗

如果Android在本地方法调用中不考虑睡眠,我如何确保手机可以进入睡眠状态,直到在本地代码中创建的一个套接字准备好接收数据?

一些背景:


Android网站的建议是“Android不会挂起执行本机代码的线程。如果正在进行垃圾收集,或者调试器发出了挂起请求,Android将在下次发出JNI调用时暂停线程。”-这似乎是指挂起单个线程,而不是将手机置于挂起/睡眠模式。除此之外,我找不到任何关于挂起/睡眠行为的具体评论。

要查找有关Android PowerManagement本机的更多信息,请查看源文档

至于使用本机的wakelock,文档警告您这样做可能会破坏系统的稳定性


User-space本机库(在//device/lib/hardware/中用作Android运行时支持库的任何硬件函数)不应直接调用Android电源管理(见上图)。绕过Android运行时中的电源管理策略将破坏系统的稳定性。

我怀疑,代码本机运行而不是在dvm下运行的事实对睡眠行为没有影响-与此相关的任何内容都将在UI线程上交付,无论如何都必须正确处理。至于在收到数据时唤醒,这实际上取决于在休眠时如何处理特定的网络接口。像google云消息传递这样的花哨的东西应该会导致与API一致的唤醒,但是期望一些随机持久的TCP连接突然有流量来唤醒它似乎更值得怀疑,尽管在某些实现中可能会起作用?