当前位置: 首页 > 知识库问答 >
问题:

用于启动服务的Android onCreate或onStartCommand

浦修文
2023-03-14

通常,当我创建一个Android服务时,我会实现oncreate方法,但在我的上一个项目中,这不起作用。我尝试实现onstartcommand,这似乎起作用了。

问题是:当我必须实现一个服务时,需要哪种方法?我必须实现哪些方法?oncreateonstartcommand还是两者兼而有之?每一个角色是什么?

共有1个答案

宋昕
2023-03-14

oncreate()在实例化service对象时调用(即:在创建服务时)。您应该在这个方法中做只需要做一次的事情(即:初始化一些变量等)。对于每个实例化对象,oncreate()只能调用一次。

如果您实际上想要/需要只初始化某个东西一次,则只需要实现oncreate()

每次客户端使用startservice(Intent Intent)启动服务时,都会调用onstartcommand()。这意味着onstartCommand()可以被调用多次。您应该在此方法中执行每次客户端向您的服务请求时所需的操作。这在很大程度上取决于您的服务是做什么的,以及它如何与客户机通信(反之亦然)。

 类似资料:
  • 我很久以前做了一些自定义systemd服务,都有相同的配置(当然ExecStart除外) 这种配置已经运行了很多年,从18.04版LTS开始,我已经启动并运行了ubuntu,但是现在看起来有些systemd服务根本没有启动,配置如下(myapp.service): 服务已启用: 如果在重新启动后执行“systemctl status myapp”: 如果我在重新启动后执行“Journal alct

  • 问题内容: 从我在Stack Exchange和其他地方看到的所有内容中,我已经正确设置了所有内容,可以在启动Android OS时启动IntentService。不幸的是,它没有在启动时启动,并且我没有收到任何错误。也许专家可以帮忙… 表现: 用于启动的BroadcastReceiver: 更新:我尝试了下面的几乎所有建议,并;在处理程序中添加了日志记录,但从未记录过任何内容。因此,它甚至还没有

  • 主要内容:通过计算机管理方式,通过命令行方式MySQL 服务和 MySQL 数据库不同,MySQL 服务是一系列的后台进程,而 MySQL 数据库则是一系列的数据目录和数据文件。MySQL 数据库必须在 MySQL 服务启动之后才可以进行访问。本节主要介绍如何启动 MySQL 服务。 Windows 系统下启动停止 MySQL 服务的方式主要有以下两种: 通过计算机管理方式 通过命令行方式 通过计算机管理方式 通过 Windows 的服务管

  • Uragano支持Web Host,也支持Generic host Web host public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Versi

  • 我正在使用Vagrant部署到Ubuntu Linux,并尝试启动服务。 然后我跟踪,发现: ?tomcat8.service-lsb:启动tomcat。加载:加载(/etc/init.d/tomcat8) active:失败(结果:exit-code)自2016-03-28 09:44:17 GMT;5s前 文档:人:systemd-sysv-generator(8) 进程:884 execst

  • 我在eclipse中安装了Jboss应用服务器,但它没有启动。后来我删除了Jboss并安装了Glassfish服务器,它也没有启动。它们没有给出任何错误,但仍处于启动模式 例如:这是Jboss7的控制台状态。1.它没有继续下去 07:31:29699信息[org.jboss.modules]jboss模块版本1.1.1。GA 07:31:31256信息[org.jboss.msc]jboss ms