java 关闭时_java – 活动关闭时服务停止

我已经阅读了一些与这个问题相关的答案,它们似乎都是一样的:

“使用START_STICKY运行您的服务”

“在前台运行您的服务”

“使用startService运行您的服务,不要绑定它”

我正在做所有这些事情,我的服务STILL关闭并在每次关闭活动时重新启动.

这不是IntentService.

我也没有在onClick处理程序中调用stopSelf或stopService.

请向下滚动到我的更新 – 此行为已被确认为Android操作系统中的错误,我已将其报告给谷歌. Click here to view the report.

从MainActivity启动我的服务:

svcIntent = new Intent(getBaseContext(), MyService.class);

startService(svcIntent);

在我的onStartCommand中:

// Enter foreground state

String title = "Service has been started...";

String subject = "Service is running...";

String body = "Monitoring your battery usage.";

Notification notification = new Notification(R.drawable.theicon, title,

System.currentTimeMillis());

if (prefs.getBoolean("notificationSounds", true))

notification.defaults |= Notification.DEFAULT_SOUND;

else

notification.sound = null;

Intent notificationIntent = new Intent(this, MainActivity.class);

PendingIntent pendIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

notification.setLatestEventInfo(this, subject, body, pendIntent);

startForeground(1500, notification);

在我的onStartCommand结束时:

...

// Release WakeLock

wl.release();

return START_STICKY;

UPDATE

我想出了什么导致它!但我不知道如何解决它.在我的服务中,我还使用服务中的AlarmManager在指定的时间内设置对服务的函数调用.

// Alarm manager setup for MyService

AlarmManager AM = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

svcIntent1 = new Intent(this, AlarmReceiver.class);

prefs.edit().putInt("initialBatt", initialBatt).apply();

svcIntent1.setAction("com.myApp.servicealarm");

pendingIntent = PendingIntent.getBroadcast(this, 93, svcIntent1, PendingIntent.FLAG_UPDATE_CURRENT);

// Set the alarm

AM.set(AlarmManager.RTC_WAKEUP, timeNow + waitTime, pendingIntent);

我注意到如果我不注释AM.set调用来设置警报,即使有一个EMPTY onReceive,我的服务在闹钟响起时被杀死,在我最近的应用程序中刷掉我的应用程序之后.如果我注释掉设置的警报调用,那么在关闭我的应用程序后,服务永远不会被杀死并继续运行.有没有搞错?!我的算法功能需要这个警报!

这很奇怪.一旦闹钟响起,我的调试消息就不会打印,我的服务会重新启动.但第二次,在服务重新启动后,调试消息会打印并且程序成功执行.

我已经尝试了这个,它仍然发生在普通的广播接收器上.我还将我的代码剥离到我的服务和广播接收器的设置警报调用,同样的事情发生,所以这不是我的算法.显然,如果您有一个设置闹钟的前台服务,当闹钟响起时,您的服务将重新启动.

闭幕

这种行为似乎是由Android操作系统中的一个错误引起的,所以我不希望得到答案.如果你想自己看看这个bug,click here.我提供了一个你可以编译并重现问题的项目.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ie6 offsetWidth/offsetHeight无效

ie6 offsetWidth/offsetHeight无效可采用手动获取:offsetWidthparseInt(node.style.width)parseInt(node.style.paddingLeft)parseInt(node.style.paddingRight);offsetHeightparseInt(node.style.height)parseInt(node.style.paddingTop)parseInt(node.style.paddi…

什么是反向代理,如何区别反向与正向代理

转自:http://blog.csdn.NET/shixing_11/article/details/7106241 一直对反射代理的反向不知道如何理解,经过百度知道,再结合下面这幅图,总算弄清楚一点了。简单的说从一个局域网出来到服务端为正向,从客户端要进入一个…

java socket 浏览器_Socket实现Java和浏览器交互。

昨天写了段小程序,现贴出来看看。以下是socket的简单介绍。获取两台联通的机器之间的IP和端口号等信息。import java.io.IOException;import java.net.Socket;public class SockerDemo {public static void main(String[] args) throws IOException {Socket socket …

C常用函数

///printf()%d 整数%f 浮点%p 指针地址 ///bzero(void *s, int n);原型&#xff1a;extern void bzero(void *s, int n);  用法&#xff1a;#include <string.h>  功能&#xff1a;置字节字符串s的前n个字节为零。 ///FD_ZERO(fd_set *fdset);将指定的文件描述符集清…

HashMap和ConcurrentHashMap的区别,HashMap的底层源码。

Hashmap本质是数组加链表。根据key取得hash值&#xff0c;然后计算出数组下标&#xff0c;如果多个key对应到同一个下标&#xff0c;就用链表串起来&#xff0c;新插入的在前面。 ConcurrentHashMap&#xff1a;在hashMap的基础上&#xff0c;ConcurrentHashMap将数据分为多个s…

mudos开发简介

首先我们应该知道mudos提供哪些服务我们可以从许多lib中找到我们需要什么假设我们的lib还是拥有很多现在mud的特性 比如战斗 人物和世界我们需要一些最基本的东西比如 master.c user.c login.c <include>你完全可以使用不一样的文件名 甚至修改出自己的mudos 你也可以完全…

java hanoi塔问题_java 解决汉诺塔问题

//汉诺塔问题//HanYang 2016/10/15import java.util.Scanner;//输出public class Hanuota {public static void Show(String a,String b){System.out.print(" " a "->" b " " );}//从a移到cpublic static void Fun(int n, String a,Strin…

心跳防护程序

心跳防护程序的作用心跳防护程序用于实现无人值守的程序的自维护功能&#xff0c;使得被防护程序由于某种异常而导致崩溃时可以自动重新启动&#xff0c;满足无人值守的环境要求。心跳防护程序适用于那些需要无人值守&#xff0c;长期运行&#xff0c;但程序由于不确定性因素有…

[水煮 ASP.NET Web API2 方法论](1-1)在MVC 应用程序中添加 ASP.NET Web API

问题 怎么样将 Asp.Net Web Api 加入到现有的 Asp.Net MVC 项目中 解决方案 在 Visual Studio 2012 中就已经把 Asp.Net Web Api 自动地整合到了 MVC 项目模板中。自 Visual Studio 2013 以后&#xff0c;创建 ASP.Net Web应用程序使用的是一种新的"One ASP.NET"项目…

java io流文件损坏_java使用io流下载.docx. xlsx文件,出现文件损坏提示

介绍在使用io流下载服务器上的资源文件时&#xff0c;出现以下提示&#xff1a;但是选择“是”后文件可以正常打开参考 代码如下&#xff1a;[codesyntax lang"java"]RequestMapping(value "downLoadInstruction")public void downLoadInstruction(HttpSe…

java des对称加密_JAVA加密解密DES对称加密算法

1 下面用DES对称加密算法(设定一个密钥&#xff0c;然后对所有的数据进行加密)来简单举个例子。23 首先&#xff0c;生成一个密钥KEY。4 我把它保存到key.txt中。这个文件就象是一把钥匙。谁拥有它&#xff0c;谁就能解开我们的类文件。代码参考如下&#xff1a;5 packagecom.n…

计算机的存储单位

位 bit (比特)(Binary Digits)&#xff1a;存放一位二进制数&#xff0c;即 0 或 1&#xff0c;最小的存储单位。字节 byte&#xff1a;8个二进制位为一个字节(B)&#xff0c;最常用的单位。计算机存储单位一般用B&#xff0c;KB&#xff0c;MB&#xff0c;GB&#xff0c;TB&am…

C内存管理详解

【规则1】用malloc或new申请内存之后&#xff0c;应该立即检查指针值是否为NULL。防止使用指针值为NULL的内存。 【规则2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。 【规则3】避免数组或指针的下标越界&#xff0c;特别要当心发生“多1”或者“…

Dubbo xml配置 和注解配置 写法

<?xml version"1.0" encoding"UTF-8"?><!-- - Copyright 1999-2011 Alibaba Group. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the Licen…

java solr_通过Java访问Solr服务实例及相关配置

一、通过Java访问Solr服务(手动创建索引库)1、创建项目&#xff0c;配置环境(导包及相关文件)1、SolrJ核心包 /solr-4.10.3/dist/solr-solrj-4.10.3.jar2、SolrJ依赖包 /solr-4.10.3/dist/solrj-lib下的所有包3、日志依赖包 /solr-4.10.3/example/lib/ext目录下的所有jar包4、J…

WCF RIA优缺点

优点&#xff1a;WCF RIA提供方便的数据访问形式&#xff0c;服务端代码写在.cs文件中继承DomainService&#xff0c;类前要声明[EnableClientAccess()]生成后sliverlight项目中/Generated_Code下会有对应的.g.cs文件&#xff0c;该文件会包含WCF RIA服务中各方法的访问方法。缺…

SpringMVC+MyBatis 返回时间格式转换的解决方案

Spring MVC 4.X ResponseBody 日期类型Json 处理 摘自http://tramp-zzy.iteye.com/blog/2090330 2014-07-10方法一&#xff1a;全局处理 <mvc:annotation-driven> <!-- 处理responseBody 里面日期类型 --> <mvc:message-converters> …

SqlServer Split功能函数

CREATE FUNCTION [dbo].[StrSplit](str nvarchar(max), --源字符串split varchar(32) --分隔符)RETURNS t TABLE(col nvarchar(max))AS BEGINWHILE(charindex(split,str)<>0) BEGININSERT t(col) VALUES(substring(str,1,charindex(split,str)-1))SET str stuff(s…

java 内存堆和栈_java堆内存和栈内存的处理

前段时间学习二叉树在处理删除操作的时候遇到一个头疼的问题&#xff1a;删除节点的时候明明已经置null了可树上该节点依旧存在&#xff0c;还必须执行node.father.left null;才可以删除node节点&#xff0c;寻找了一下原因发现还是因为对java内存管理理解不够深入。代码如下&…

maven编译项目时提示:cached in the local repository

1.今天使用命令mvn compile编译maven项目时提示错误信息&#xff0c;部分错误信息如下&#xff1a; Failure to transfer wsdl4j:wsdl4j:jar:1.6.3 from http://xx.xx.xx.xx:8081/nexus/content/groups/public was cached in the local repository, resolution will not be re…