我正在尝试制作一个粘性服务,该服务在死亡后不久就会重新启动(例如,因为Android已经杀死了它以释放内存)。(Un)幸运的是,我在Android 5.0.1上,它有一个漂亮的内存泄漏错误,使真正的测试变得容易。
看着logcat
我看到:
I/ActivityManager( 943): Process com.app.my (pid 28834) has died
W/ActivityManager( 943): Scheduling restart of crashed service com.app.my/com.service.my in 191688ms
I/ActivityManager( 943): Process com.app.my (pid 30842) has died
W/ActivityManager( 943): Scheduling restart of crashed service com.app.my/com.service.my in 766752ms
后来时间上升到3M,使其不可接受。
我试图使用AlarmManager和重新启动意图来解决这个问题:
Intent restartIntent = new Intent(activity, activity.getClass());
restartIntent.putExtra("config", config);
PendingIntent restartAct = PendingIntent.getActivity(
activity.getApplicationContext(), 0, restartIntent, PendingIntent.FLAG_NO_CREATE);
AlarmManager alarmManager = (AlarmManager)activity.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 60000, 60000, restartAct);
然而,这没有帮助。我在日志中找不到任何信息,所以可能是AlarmManager重复在activity终止后被放弃,或者可能是我做错了什么?
我在观察WhatsApp应用程序,发现:
I/ActivityManager( 943): Process com.whatsapp (pid 27009) has died
W/ActivityManager( 943): Scheduling restart of crashed service com.whatsapp/.messaging.MessageService in 10947ms
I/ActivityManager( 943): Process com.whatsapp (pid 29913) has died
W/ActivityManager( 943): Scheduling restart of crashed service com.whatsapp/.messaging.MessageService in 10918ms
I/ActivityManager( 943): Process com.whatsapp (pid 30681) has died
W/ActivityManager( 943): Scheduling restart of crashed service com.whatsapp/.messaging.MessageService in 10987ms
第一次和最后一次崩溃与 com.app.my 过程完全相同。不知何故,WhatsApp设法将“重试时间”保持在同一水平,尽管经常崩溃。他们是怎么做到的?这里的答案表明,对于所有aps来说,它应该是相同的:崩溃的服务在很长一段时间后重新启动
备注:
检查:
Intent watchdogIntent = new Intent(getApplicationContext(), SomeClasss.class);
watchdogIntent.setAction(INTENT_ACTION);
((AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE))
.setInexactRepeating(
AlarmManager.ELAPSED_REALTIME,
0,
currentWatchDogInterval,
PendingIntent.getService(
getApplicationContext(),
0,
watchdogIntent,
0)
);
问题内容: 关于它有几个问题,但我总是读同一本书:“如果系统需要资源,该服务将被杀死”或“您无法构建永远运行的服务,因为它在后台运行的次数越多,越容易受到影响。被系统杀死”等等。 我面临的问题是:我的服务运行正常,并且可以预期,如果我运行我的应用程序,然后退出它,我的服务仍在运行,但是当我杀死我的应用程序时(通过转到“最近的应用程序”并对其进行扫描)离开)服务停止。在这一刻,如果我转到设置>>应用
我有一个问题。在过去的4-5周里,我一直在Eclipse中使用Android,并且虚拟机从未出现过问题(是的,它们很慢。但从未崩溃)。 现在,我相信,自从4.2开始为uni开发一个新项目(截止日期下周)以来,我的4.2虚拟机在启动时突然开始崩溃,因为“内核恐慌”(最后的响应)。 我想问一下我是否有什么可以做的,也许可以下载修补程序或其他什么。API和Eclipse都是最新的,或者我的计算机可能有什
我已经有3到4天没有使用Android Studio 2.3.2了,当我尝试启动它时,突然出现以下错误。请注意,一周前我单独安装了Android Studio 3.0 Canary 1,但一切正常,两个版本都可以正常工作。我不明白为什么我突然在启动Android Studio时遇到了问题。 我使用MacBook。 以下是Android Studio在发布时给出的错误日志: 谢谢你的帮助!
问题内容: 我想每5分钟检查一次服务中的实际时间,然后根据时间将手机静音或取消静音。早些时候,我尝试在线程.sleep(300000)的末尾使用while(true),但是它总是与ANR一起崩溃,所以我尝试使用计时器任务,但是现在它在带有NullPointerException 的行之后崩溃 LogCat: 问题答案: 您需要在onCreate内初始化audioManager。
我开发的应用程序在使用Android Studio进行测试时效果很好。但是在谷歌Play商店发布后遇到了问题。 该应用程序具有多个页面。其中一个页面使用Unity启动AR图像跟踪功能,只需单击一个按钮即可。从Android Studio将应用程序添加到我的手机时完全没有问题,一切正常。但是,当从谷歌Play商店下载时,当单击按钮启动unity时,它会立即崩溃。 我是一个新的Android开发者。任
我正在探索使用Android客户端的Xively框架。我已经安装了演示应用程序中给出的“服务”。当我在Android2.3和4.0设备上启动应用程序时,它就会崩溃。下面是相同的堆栈轨迹,令人惊讶的是它是在Android4.1上工作的。有什么建议可以让它在Android2.3和4.0设备上运行吗 Stacktrace 10-25 18:25:18.854:D/HttpService(17080):o