- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我搜索了一段时间,没有找到相同的问题。
我正在编写一个应用程序,我需要每天安排很多闹钟,然后全天做不同的事情,我很想能够测试,比如 24 小时 24 分钟,或者其他东西那些线。
是否可以在模拟器或设备上模拟更快的时间流逝?
如果是,这对我来说非常好,能够在不浪费开发时间的情况下测试这些东西。事实上,我正在以我认为可行的方式编写它们,进行现场测试,然后自己运行程序以验证行为是否正确,但这大大减慢了我的开发时间,不得不等待一天或两个是看到不良行为,然后尝试修复它并重新测试它。任何帮助将不胜感激!
最佳答案
如果将所有与时间相关的任务抽象为一个类,则可以将其继承到一个测试类中,其中所有系统时间都乘以某个常数,所有用户时间都除以某个常数。您可以通过此类调用它,而不是直接调用任何依赖于时间的方法。
class TimeHandler {
protected Context context;
public TimeHandler(Context context) {
mContext = context;
}
public long toSystemMillis(long userMillis) {
return userMillis;
}
public long toUserMillis(long systemMillis) {
return systemMillis;
}
public long toSystemDelay(long userDelay) {
return userDelay;
}
public long toUserDelay(long systemDelay) {
return systemDelay;
}
public void setAlarmAt(long userMillis, PendingIntent operation) {
long systemMillis = toSystemMillis(userMillis);
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, systemMillis, operation);
}
public void setAlarmAfter(long userDelay, PendingIntent operation) {
long systemDelay = toSystemDelay(userDelay);
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, systemDelay, operation);
}
} // (scroll down)
class OptimizedTimeHandler extends TimeHandler {
protected static final long RATE = 60; // 1 minute -> 1 hour
protected static final long START_TIME = Date.UTC(2011,9,18,0,0,0);
public TestTimeHandler(Context context) {
super(context);
}
@Override
public long toSystemMillis(long userMillis) {
return START_TIME + (userMillis - START_TIME)/RATE;
}
@Override
public long toUserMillis(long systemMillis) {
return START_TIME + (userMillis - START_TIME)*RATE;
}
@Override
public long toSystemDelay(long userDelay) {
return userDelay/RATE;
}
@Override
public long toUserDelay(long systemDelay) {
return systemDelay*RATE;
}
}
更新
您可以将 RATE
和 START_TIME
常量设为实例字段。甚至构造函数参数。
示例用法:
TimeHandler th = new TimeHandler();
th.setAlarmAt(Date.UTC(2011,9,19,0,0,0), operation);
// will fire at 2011-09-19 00:00:00 (real time)
th = new OptimizedTimeHandler();
th.setAlarmAt(Date.UTC(2011,9,19,0,0,0), operation);
// will fire at 2011-09-18 00:24:00 (real time)
如果你不能控制闹钟的实际调度,我认为没有什么办法可以压缩时间。当您从数据库中读取时,您将不得不使用这些类来安排警报。
关于android - 是否可以在 Android 中模拟增加的时间流逝率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7461657/
我使用 QBFC v13 和 Delphi XE6。 目标是从我的应用程序创建 Estimate 并将其参数设置到 QuickBooks 中。 我从 QBFC13 导入类型库并将其添加到我的项目中。
我有一个数据库,其中有很多格式不正确的地址。在这个地址中,我只有一个街道地址或带有城市名称的街道。在我的应用程序中,用户选择一些类别,然后我想在 map 上显示例如 50,100,300 等地址。(不
在大多数软件项目中,缺陷源自需求、设计、编码和缺陷更正。根据我的经验,大多数缺陷都源于编码阶段。 我有兴趣了解软件开发人员使用哪些实用方法来降低缺陷注入(inject)率。 我已经看到以下方法的使用取
我正在使用实时 API 中的标签订阅构建一个应用程序,并且有一个与容量规划相关的问题。我们可能有大量用户同时发布到订阅的主题标签,因此问题是 API 实际发布到我们的订阅处理端点的频率是多少?例如,如
尝试使用 NULLIF 或 IFNULL 函数,但仍收到被零除的消息。 SELECT client_id ,COUNT(distinct CASE WHEN status = 'failed' THE
我目前正在开发一个使用 Django-rest-framework 制作的 API。我必须根据每个用户组设置限制率。 我们目前使用默认配置的 memcached 作为缓存后端,即按站点缓存。 在使用
我认为有时在神经网络(特别是一般对抗网络)训练期间改变丢失率可能是一个好主意,从高丢失率开始,然后线性地将丢失率降低到零。您认为这有意义吗?如果是的话,是否有可能在 tensorflow 中实现这一点
我有一个 Windows Server 2008,Plesk 运行着两个网站。有时服务器运行缓慢,并且有一个 named.exe 进程使 CPU 峰值达到 100%。它持续很短的时间,过一会儿它又来了
我正在使用 scikit-learn 随机森林分类器,我想通过将成功投票所需的树数量从大于 50% 增加到 75% 来降低 FP 率,在阅读文档后我不这样做确定如何做到这一点。有没有人有什么建议。 (
当我连续按下按键事件(字母 k)时,为什么以下按键事件不会减慢 3000 密耳?如果我按住手指,计数会迅速增加,因为 mcount 上没有 setTimeout。这是为什么?每次计数之间应该有延迟,但
我是一名优秀的程序员,十分优秀!