我的应用程序有一个后台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)
Android 8.1.0
我最近安装了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 Studio作为我的IDE进行开发.我创建了一个虚拟设备,它是Nexus 5的预设.以下是AVD的详细信息,
因此,当我第一次构建我的应用程序并使用模拟器运行它时,它在锁定屏幕上被冻结.到那时我还没看任何日志.然后我再次运行它然后它是成功的.但是我让它休息了一段时间(大约10分钟),当我再次检查时,AVD被冷冻了.然后我看到logcat记录器在无限循环中写入以下错误,
02-02 17:48:32.768 1233-1259/system_process E/libsuspend:写入/ sys/power/state时出错:没有这样的设备
它只是继续写作.ADB日志有以下几点,
PropertyFetcher:AdbCommandRejectedException获取设备模拟器-5554:设备脱机的属性
为什么会这样?这是某种配置问题吗?
我有一个 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)