Articles of android doze

最小的Android前台服务在高端手机上被杀死

我正在尝试创建一个允许用户记录路线(位置/ GPS)的应用程序。 为了确保即使屏幕关闭也记录了位置,我已经为位置记录创建了foreground service 。 我将位置存储在Room Database ,该Room Database使用Dagger2注入我的服务。 但是,这项服务被Android杀死,当然这并不好。 我可以订阅低内存警告,但这并没有解决我的服务在运行Android 8.0的现代高端手机上大约30分钟后被杀的根本问题 我创建了一个只有“Hello world”活动和服务的最小项目: https : //github.com/RandomStuffAndCode/AndroidForegroundService 该服务在我的Application类中启动,并且路由日志记录通过Binder启动: // Application @Override public void onCreate() { super.onCreate(); mComponent = DaggerAppComponent.builder() .appModule(new AppModule(this)) .build(); Intent startBackgroundIntent = new Intent(); startBackgroundIntent.setClass(this, LocationService.class); startService(startBackgroundIntent); } // Binding activity bindService(new Intent(this, LocationService.class), mConnection, Context.BIND_AUTO_CREATE | Context.BIND_IMPORTANT); // mConnection starts the […]

打盹模式如何影响后台/前台服务,有/无部分/完整唤醒锁?

这是一个简单的问题,看到G +( 这里 )有关于此的大量post,以及官方文档( 这里 )缺乏信息: 当设备进入“打盹”模式时,应用程序的服务会发生什么变化? 它对后台/前台服务(绑定/未绑定,已启动/未启动)有什么作用,有/无部分/完整唤醒锁? 例如,为了创建在设备屏幕关闭时播放音频流的服务,您会做什么? 如果音频流不是来自本地文件,而是来自网络,该怎么办? 看到Google开发者声称: 已经运行前台服务的应用程序(带有相关通知)不受打瞌睡的限制。 – 之后进行了很多讨论,声称这并不完全正确,我认为知道特殊的后台操作应用程序应该做什么是相当令人困惑的。

如何正确触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图?

如文档中所述: “拥有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用程序可以触发系统对话框,让用户直接将应用程序添加到白名单,而无需进行设置。应用程序会触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Intent来触发对话框。” 有人能告诉我解雇这个意图的正确方法吗?

Android 7.0(Nougat)打盹模式停止Web服务

我有一个带有WiFi锁的Android前台服务,它充当另一个本地设备的Web服务。 在打盹模式之前,获取WiFi锁并根据需要提供服务非常有效。 即使关闭了我的应用程序的电池优化function,当屏幕关闭几分钟时,手机仍在查杀应用程序。 如何正确警告Android明确在前台执行客户请求的服务,并且他们此时不希望他们的手机进入睡眠状态? 编辑:这个问题仍然存在于Android 8.0(奥利奥)

如何在打盹模式下移动设备(Android Preview M / Marshmallow)?

我按照这里描述的步骤: https://developer.android.com/preview/testing/guide.html#doze-standby 情况: Android Debug Bridge版本1.0.32 带有预览M的Nexus 9 贝壳: $ adb shell dumpsys battery unplug =>工作,设备拔掉 $ adb shell dumpsys deviceidle step =>输出:步进到:ACTIVE $ adb shell dumpsys deviceidle -h =>不起作用=>输出: Device idle controller (deviceidle) dump options: [-h] [CMD] -h: print this help text. Commands: step disable enable whitelist 我尝试过: adb shell dumpsys deviceidle enable 但它没有用。 […]

电池省电+电话呼叫意图=>没有互联网?

注意:事实certificate,原始问题在其假设中是不正确的。 在底部查看有关其编辑的更多详细信息。 它现在关于电池节电器,而不是电池节电和打盹模式。 它也不是关于Service&BroadcastReceiver,而是仅仅是BroadcastReceiver。 背景 从Android Lollipop开始,Google推出了新的,手动和自动方式来帮助节省电池: “打盹”模式和“电池节电器”。 在某些情况下,由于这些技术,应用可能无法访问Internet。 问题 我在一个应用程序上工作,该应用程序需要使用在特定情况下触发的后台服务访问Internet,如果收到重要内容,则会显示一些UI。 作为用户,我注意到在某些情况下,它无法访问Internet。 检查应用程序是否可以访问Internet是这样的: public static boolean isInternetOn(Context context) { final NetworkInfo info = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); return !(info == null || !info.isConnectedOrConnecting()); } 问题是我需要检查为什么这有时会返回false,所以如果它失败了,我们应该告诉用户(可能通过通知)无法访问数据,因为设备限制了应用程序,并提供给用户从电池优化中列出应用程序。 我不确定哪些会影响这个:打盹,节电,或两者兼而有之,如果总是这样,对于所有设备,在所有情况下。 我试过的 我find的是如何查询打盹模式和省电模式(省电模式): public class PowerSaverHelper { public enum PowerSaveState { ON, OFF, ERROR_GETTING_STATE, IRRELEVANT_OLD_ANDROID_API } public enum WhiteListedInBatteryOptimizations { WHITE_LISTED, NOT_WHITE_LISTED, […]

Android 6.0打盹模式下的闹铃pipe理器问题

我制作了一个应用程序,一直运行到Android 6.0。 我认为这是Dozefunction,它不允许我的闹钟触发。 我使用sharedpreferences来处理选项: //ENABLE NIGHT MODE TIMER int sHour = blockerTimerPreferences.getInt("sHour", 00); int sMinute = blockerTimerPreferences.getInt("sMinute", 00); Calendar sTime = Calendar.getInstance(); sTime.set(Calendar.HOUR_OF_DAY, sHour); sTime.set(Calendar.MINUTE, sMinute); Intent enableTimer = new Intent(context, CallReceiver.class); enableTimer.putExtra("activate", true); PendingIntent startingTimer = PendingIntent.getBroadcast(context, 11002233, enableTimer, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager sAlarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); sAlarm.setRepeating(AlarmManager.RTC_WAKEUP, sTime.getTimeInMillis(), AlarmManager.INTERVAL_DAY, startingTimer); 任何线索最新错误在这里? 这是一个阻止通话的应用程序。 谢谢! 编辑:我有3个文件(更多,但…)像: MainActivity […]

Android 7.0(Nougat)打盹模式停止Web服务

我有一个Android的前台服务与WiFi锁,充当另一个本地设备的Web服务。 在打盹模式之前,根据需要获取WiFi锁和服务是非常有效的。 即使我的应用closures了电池优化function,当屏幕closures几分钟时,手机仍然会closures应用程序。 我如何正确地提醒Android,客户请求的服务在前台正在执行,他们不希望他们的电话在这个时候睡觉? 编辑:这个问题仍然存在于Android 8.0(奥利奥)

如何在打盹模式(Android Preview M /棉花糖)转换设备?

我遵循这里描述的步骤: https://developer.android.com/preview/testing/guide.html#doze-standby 情况: Androiddebugging桥版本1.0.32 Nexus 9与预览M 贝壳: $ adb shell dumpsys battery unplug =>工作,设备拔掉 $ adb shell dumpsys deviceidle step =>输出:步进到:ACTIVE $ adb shell dumpsys deviceidle -h =>不起作用=>输出: Device idle controller (deviceidle) dump options: [-h] [CMD] -h: print this help text. Commands: step disable enable whitelist 我尝试过: adb shell dumpsys deviceidle enable 但它没有工作。 所以我的问题,如上所述,如何转移设备在打盹模式? 我做错了什么? […]

我如何正确地触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图?

正如文件中所述: “持有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用程序可以触发系统对话框,让用户直接将应用程序添加到白名单,而无需进行设置。应用程序触发ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图触发对话。 有人可以告诉我正确的方法来解决这个问题吗?