- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们正在尝试在 Android 设备上使用 boost asio deadline_timers。我们有一个要求,我们需要每 100 毫秒触发一个定时器。我使用了如下代码。但是,计时器似乎每 1 秒触发一次。我们应该在 Android 系统中进行哪些微调才能使 boost asio 截止时间计时器按预期工作?
注意:以下代码在普通 linux 系统上按预期工作。是什么让它在 Andorid 系统上的工作方式不同?
代码:
void print(asio::deadline_timer* ptimer, const asio::error_code& err)
{
struct timeval tval;
if(0 == gettimeofday(&tval, NULL))
{
std::cout <<" Timer... sec::microsec = "<<tval.tv_sec<<"::"<<tval.tv_usec<< std::endl;
}
else
{
std::cout <<" Timer... gettimeofday Error!" << std::endl;
}
ptimer->expires_from_now(boost::posix_time::milliseconds(100));
ptimer->async_wait(boost::bind(&print, ptimer, asio::placeholders::error));
}
Android 设备上的输出
Timer... sec::microsec = 1298328679::39207
Timer... sec::microsec = 1298328680::46773
Timer... sec::microsec = 1298328681::54624
Timer... sec::microsec = 1298328682::63861
Timer... sec::microsec = 1298328683::65740
Timer... sec::microsec = 1298328684::69301
Timer... sec::microsec = 1298328685::76500
Timer... sec::microsec = 1298328686::85768
最佳答案
您可能想确保您的 Android 环境最终定义了BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK。
如果您查看 boost/asio/time_traits.hpp
中的默认 timer_traits,您会发现如果未定义,asio 将使用 second_clock 作为它的计时器。
此定义来自 boost/date_time/compiler_config.hpp
,以 BOOST_HAS_GETTIMEOFDAY 或 BOOST_HAS_FTIME 为条件。鉴于您的示例,大概应该定义前者。
不知道是android算作自己的平台还是boost检测为linux。在 boost/config/platform/linux.hpp
中定义为:
//// If glibc is past version 2 then we definitely have// gettimeofday, earlier versions may or may not have it://#if defined(__GLIBC__) && (__GLIBC__ >= 2)# define BOOST_HAS_GETTIMEOFDAY#endif
这可能是您要为 android 添加附加条件的地方。
关于android - Android 设备上的 Boost Asio deadline_timer 不会在到期时间触发,而是在稍后的时间触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4777998/
我正在编写一个插件,有一个ajax调用向用户显示数据。 如果用户想在ajax成功时添加一些js?他可以从他的 js 脚本中做到这一点吗,比如定位这个 ajax 成功事件。 例如: $(documen
我有 html 代码,例如 - x 最初插入 div 'insert_calendar_eda_form'。 Javascript代码 calendar_eda_add
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我已经使用命令 sudo start myservice 启动了一个 upstart 服务。我想要一种方法,以便稍后我(或任何人)可以检查该服务是否已启动并正在运行。检查它的命令是什么? 最佳答案 找
我是一名优秀的程序员,十分优秀!