小编Per*_*rry的帖子

在Genymotion中测试Doze功能(Android 6.0 Marshmallow)

我试过了谷歌的命令

adb shell dumpsys battery unplug
adb shell dumpsys deviceidle step
Run Code Online (Sandbox Code Playgroud)

来自Genymotion的"预览 - 谷歌Nexus 6P - 6.0.0 - API 23 - 1440x2560"和"预览 - 谷歌Nexus 5X - 6.0.0 - API 23 - 1080x1920"虚拟设备,但不幸的是无法让任何人进入空闲模式.总是在第二个命令后我看到Stepped to: ACTIVE.

然后尝试

adb shell dumpsys deviceidle force-idle
Run Code Online (Sandbox Code Playgroud)

我看Unable to go idle; not enabled.这很奇怪,因为Genymotion在版本2.6.0的发行说明(https://www.genymotion.com/#!/release-notes)中说明了"Doze现在正常运行".

有没有人设法在Genymotion中使用和测试Doze?我应该使用其他一些命令吗?

android genymotion android-6.0-marshmallow android-doze

4
推荐指数
1
解决办法
1794
查看次数

当手机睡眠时,AlarmManager.setExact在Kitkat中仍然不准确

我几天都在使用AlarmManager.setExact().我的应用程序需要精确的警报,并且可以使用AlarmManager.setRepeating()在旧的Androids上正常工作.

我已经读过自API 19以来它已经改变并相应地更新了我的代码.

以下是负责设置警报的代码:

PendingIntent pi = PendingIntent.getBroadcast(context.getApplicationContext(), alarmOrder+1, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        getAlarmManager(context).setExact(AlarmManager.RTC_WAKEUP, alarmTimeMillis, pi);
    }
    else {
        getAlarmManager(context).setRepeating(AlarmManager.RTC_WAKEUP, alarmTimeMillis, AlarmManager.INTERVAL_DAY, pi);
    }
Run Code Online (Sandbox Code Playgroud)

广播接收器通过报警屏幕启动新活动:

@Override
public void onReceive(Context context, Intent intent) {
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AlarmTimeReceiver");
    wl.acquire();

    Intent alarmIntent = new Intent(context, AlarmActivity.class);
    alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    context.startActivity(alarmIntent);

    //Release the lock
    wl.release();
}
Run Code Online (Sandbox Code Playgroud)

问题是,在通过USB线连接的Android 4.4设备上进行测试时,一切正常.报警始终在指定的时间开始(屏幕打开/关闭).不幸的是,当我从计算机断开设备时,只有在打开屏幕时才能正确启动警报.当我关闭屏幕时,警报会在不准确的时间内启动.

我错过了什么吗?你们有没有经历过类似的情况?

android alarmmanager android-4.4-kitkat

1
推荐指数
1
解决办法
3065
查看次数