小编k9y*_*osh的帖子

Android Oreo在进入休眠模式后查杀后台服务并清除待处理警报,预定作业

我的应用程序有一个后台service运行,可以让用户保持最新状态location并每隔五分钟将其更新一次.要location连续运行此更新过程,我使用警报管理器从其service自身设置下一个执行时间.然而,当我在安装应用程序Nokia 6运行Android 8.1它工作了一段时间,如果我保持手机闲置一段时间后,我service将得到与应用程序的下一个警报也被从系统中清除杀死alarm manager.我的猜测是空闲时间使手机进入doze mode.但是,我不明白警报管理员为何被清除.根据我的理解,doze mode应定期打开维护窗口以执行任何待处理的任务.

为了缓解这个问题,我试图应用JobScheduler service之上AlarmManager,其中每15分钟运行.这样做的目的jobscheduler是重新启动service其中的alarmmanager内容,因此即使它被杀死并且警报被清除,jobscheduler也会重新启动service.

在我测试了这个补丁并保持一段时间之后idle mode,它导致了两者JobScheduler Service并且Service其中的警报被预定的作业和警报从系统中清除而被杀死.

在Android文档中我们可以使用它JobScheduler来减轻其后台执行限制.为了测试这个,我services在测试应用程序时强制杀死了两个,但是已经预定的作业没有被清除,并且它使service警报再次成功运行.我不明白这种行为的原因,虽然Evernote的家伙给出的解释可以在这里安排这个场景Android Job by Evernote

对这种异常行为的任何想法?

测试环境细节

  • 装置: Nokia 6 (TA-1021)
  • OS: Android 8.1.0

android alarmmanager android-jobscheduler

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

Android项目构建失败,错误检索项目的父项:找不到与给定名称匹配的资源

我最近安装了Android Studio 1.5.1的全新副本.我导入了一个基于以前版本的Android Studio构建的项目,并尝试加载到IDE中.但它开始给我这个错误.

Error:Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\yomal.ds\AppData\Local\Android\android-sdk\build-tools\21.1.2\aapt.exe'' finished with non-zero exit value 1
C:\Users\yomal.ds\AndroidStudio_Workspace\ClaimAssistant\app\build\intermediates\res\merged\debug\values-v23\values-v23.xml
Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(18) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.
Run Code Online (Sandbox Code Playgroud)

我检查了我的gradle.build,看起来很好看.这是我的gradle.build文件.

apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.informaticsint.claimassistant"
    minSdkVersion 14
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled …
Run Code Online (Sandbox Code Playgroud)

android android-studio

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

AVD在一段时间后冻结

我正在使用Android Studio作为我的IDE进行开发.我创建了一个虚拟设备,它是Nexus 5的预设.以下是AVD的详细信息,

AVD详细信息

因此,当我第一次构建我的应用程序并使用模拟器运行它时,它在锁定屏幕上被冻结.到那时我还没看任何日志.然后我再次运行它然后它是成功的.但是我让它休息了一段时间(大约10分钟),当我再次检查时,AVD被冷冻了.然后我看到logcat记录器在无限循环中写入以下错误,

02-02 17:48:32.768 1233-1259/system_process E/libsuspend:写入/ sys/power/state时出错:没有这样的设备

它只是继续写作.ADB日志有以下几点,

PropertyFetcher:AdbCommandRejectedException获取设备模拟器-5554:设备脱机的属性

为什么会这样?这是某种配置问题吗?

android android-virtual-device android-studio

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

单击微调器时无法添加窗口,令牌无效错误

我有一个 android 应用程序,当单击侧栏中的一个选项时,它会转到一个片段,然后转到另一个具有可点击单选按钮的片段。当点击这些时,它会创建一个弹出窗口,其中包含一些文本字段。

基本上这就是流程的走向,

活动 --> 片段 1 --> 片段 2 --> 弹出窗口

我在这个 PopupWindow 上有一个微调器,但是当我单击它选择一个值时,它会引发以下异常。我不明白为什么会这样。

Process: com.informaticsint.claimassistant, PID: 5045
android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@945936c is not valid; is your activity running?
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:849)
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:337)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
    at android.widget.PopupWindow.invokePopup(PopupWindow.java:1329)
    at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:1155)
    at android.widget.ListPopupWindow.show(ListPopupWindow.java:791)
    at android.widget.Spinner$DropdownPopup.show(Spinner.java:1366)
    at android.widget.Spinner.performClick(Spinner.java:828)
    at android.view.View$PerformClick.run(View.java:22526)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:158)
    at android.app.ActivityThread.main(ActivityThread.java:7224)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Run Code Online (Sandbox Code Playgroud)

这是导致问题的 Spinner 代码。在下面提到的AssignmentDetailsActivity类中,showDamagedItemEntryPopup()方法

    statusSpinner = (Spinner)popupView.findViewById(R.id.popup_status_spinner);
    ArrayAdapter<String> statusSpinnerArrayAdapter …
Run Code Online (Sandbox Code Playgroud)

android

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