编辑:根据CommonsWare的答案澄清问题
我们通过AlarmManager安排一个警报,每60秒触发一次.当我们的应用程序被杀死时,我们的警报似乎不再执行.即使应用程序被手动或系统杀死,有没有办法使这些警报持续存在?
这对我们来说是一个问题,因为我们有一个显示时间的小部件应用程序.这意味着我们需要每分钟更新一次.为了解决AppWidgetProvider的onUpdate方法的30分钟更新限制,我们使用AlarmManager.它通常运行良好,但有些用户报告时间不同步.在与其中几个人交谈之后,我怀疑我们的应用程序是通过任务杀手应用程序手动杀死的,或者Android本身正在杀死我们的应用程序.
对根问题的任何其他替代解决方案(在窗口小部件中保持时间同步)也是受欢迎的.
以下是我们执行的用于安排警报的代码:
Intent intent = new Intent(UPDATE_TIME);
PendingIntent pIntent = PendingIntent.getBroadcast(ctx,
0 /* no requestCode */, intent, PendingIntent.FLAG_UPDATE_CURRENT );
// get alarm params
Date d = new Date();
long timeTilMinuteChange = 60*1000-d.getSeconds()*1000;
long startTime = System.currentTimeMillis() + + timeTilMinuteChange;
AlarmManager am = (AlarmManager) ctx.getSystemService(Context.
am.cancel(pIntent);
am.set(AlarmManager.RTC, System.currentTimeMillis(), pIntent);
am.setRepeating(AlarmManager.RTC, startTime, 60000, pIntent);
Run Code Online (Sandbox Code Playgroud) 是否有可能检测到Daydream是打开还是关闭?如果是这样,怎么样?
编辑:为了澄清,我希望阅读DayDream的系统设置(很像飞机模式和其他设置).你可以从Intent.ACTION_DREAMING_STARTED和Intent.ACTION_DREAMING_STOPPED推断它,但它不是一回事.
我一直在扫描所有流行的js库,但我找不到一个具有宽度函数的DOM元素实际上在Internet Explorer中占用了怪癖模式.问题是当使用怪癖模式时,填充和边框不会计入宽度.据我所知,当doctype被省略或doctype设置为html 3.2时会发生这种情况.
显然我可以将doctype设置为符合标准的东西,但是这个脚本可以嵌入任何地方,所以我无法控制doctype.
将问题分解为更小的部分:
1)你如何检测怪癖模式?2)从元素中提取边框和填充以补偿的最佳方法是什么?
原型示例:
<html>
<head>
</head>
<body>
<div id="mydiv" style="width: 250px; pading-left: 1px; border: 2px black solid">hello</div>
<script>
alert($('mydiv').getWidth())
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
结果:
253(ff)250(即)
提前致谢!