gra*_*can 6 testing android automated-tests alarm alarmmanager
我的一个宠物项目显示用户定义的特定日期的通知.我用
AlarmManger.setRepeating(AlarmManager.RTC_WAKEUP, millis, AlarmManager.INTERVAL_DAY, pendingIntent)
Run Code Online (Sandbox Code Playgroud)
安排每日警报,启动应用程序以决定是否应该今天显示通知.
问题是有时每天警报停止工作.我知道了很多原因(设备重启,日期/时间更改,应用程序重新安装,打盹模式),我确信有一些原因我还没有找到(欢迎提出想法!).
我的问题是如何针对所有可能的风险正确测试警报?仪器测试适合这里吗?
我的问题是如何针对所有可能的风险正确测试警报?仪器测试适合这里吗?
由于它AlarmManager是Android OS的一部分,因此经过了良好的测试,因此您无需进行任何测试或单元测试即可对其进行测试。您可以测试由警报调用的服务,但无需测试警报设置是否正确。
在少数情况下,您的警报被丢弃,失效或被忽略。您已经给他们打电话了:
现在,您可以使用系统通知(操作系统广播)来重新配置警报。
重新启动时
,设备关闭时会丢弃警报,因此在重新启动时再次设置
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
// set repeating alarm
MyAlarmMangerSupport.set(context);
}
}
}
Run Code Online (Sandbox Code Playgroud)
准时更改准时更改
相同的步骤:
public class TimeChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (Intent.ACTION_TIME_CHANGED.equals(action ) || Intent.ACTION_TIMEZONE_CHANGED.equals(action )) {
// cancel previous alarm and set a new one
MyAlarmMangerSupport.cancelAndSet(context);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我相信在打ze模式下,如果设备进入打ze模式
,则无需显示任何不相关的通知。无论如何,即使设备处于打there状态,也有一种方法可以触发警报。
重要的是要知道,打ze模式是从API级别23开始的一项新功能。
用户必须将您的应用列入白名单并为您的应用禁用电池优化。
使用setExactAndAllowWhileIdle方法为Android级别23+的设备设置警报:
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, period, pendingIntent);
Run Code Online (Sandbox Code Playgroud)
重要提示:作为单发警报,您必须在警报接收器中再次设置它:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if ("my-Pet-Notification".equals(action )) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
// set repeating alarm, calls setExactAndAllowWhileIdle
MyAlarmMangerSupport.set(context);
}
//execute service to show notification
[..]
}
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1620 次 |
| 最近记录: |