在一个活动中,我定义了以下按钮侦听器:final Button button = (Button) findViewById(R.id.buttonExit);

button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

stopService(new Intent(StartupActivity.this, SamcomService.class));

finish();

}

});

如您所见,该按钮应该停止正在运行的服务(在上一步中创建),然后自行完成。

当我按下按钮时,service.ondestroy将按预期执行。在ondestroy中,我做了一些清理,然后最后调用super.ondestroy():

@Override

public void onDestroy() { // the service onDestroy

// Do some cleaning

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

mNotificationManager.cancel(1);

// more cleaning

Toast.makeText(this, "The service has been stopped! Wii!", Toast.LENGTH_LONG).show();

super.onDestroy();

}

在我的世界里,这意味着这项服务已经死了,埋了,还有其中所有的变数。对吗?

嗯,看起来不像。

问题是,我的服务中有一个字符串,在单击按钮停止服务之前,我会将文本附加到该字符串。像这样的:

public class SamcomService extends Service {

private String startupText = "";

private void addTextToStartup(String text)

{

startupText += text;

// Sending a broadcast, not relevant

// ...

}

// ...

}

当我再次启动我的应用程序时,这个字符串StartupText不会重置!好像服务根本没被杀。StartupText包含在上一次运行中添加到它的所有文本。

为什么?我错过了什么?服务不是死了吗?当我再次启动应用程序时,将调用serviceocreate方法,这意味着它是从头开始的……

---编辑---

我刚读到:

What exactly does onDestroy() destroy?

这意味着灾难不会真的摧毁任何东西。对的?它很蹩脚,而且非常烦人。在这里有一个很受欢迎的线索,所以我两年前就开始讨论这个问题了,我想……:

Is quitting an application frowned upon?

最佳答案

所以,正如我在上面的编辑中所写的:

我刚读到:What exactly does onDestroy() destroy?

这意味着灾难不会真的摧毁任何东西。对的?它很蹩脚,而且非常烦人。在这里有一个很受欢迎的帖子,所以我两年前就开始讨论这个问题了,我想……:Quitting an application - is that frowned upon?

然而,我解决了我的问题,当然每个人都会说“不!”去。不过,它工作得很好。我只是将System.Exit(0)放在服务中的ondestroy方法中。不再有延迟变量=)

android 停止服务执行,android - 为什么在停止服务(执行onDestroy已执行)后,服务中的变量没有“重置”?...相关推荐

  1. Android onDestroy方法执行延迟的原因

    一整天过去,终于发现了自己项目中的这个问题所在,onDestroy方法执行延迟是因为-->页面跳转代码要放在当前Activity的finish()方法之前执行. 以下为整个事件的过程(仅作个人记 ...

  2. android serviceconnection unbind流程,Android - Service Bind/Unbind 使用

    Service Bind/Unbind 使用方式 本文介绍了本地服务,也就是同一个进程内的服务,如何使用 Bind/Unbind 方式被 Activity 使用. 本文不涉及 AIDL 使用 Serv ...

  3. 安卓 后台杀死进程,onDestroy会执行吗?

    关键词:安卓后台杀死进程,Activity里 onDestroy会执行吗? [答案]:OnDestroy会执行,也不会执行. 如果APP启动了MainActivity,MainActivity再启动了 ...

  4. 【Android】Chronometer计时器实现计时、停止、暂停、重置功能

    [Android]Button+Chronometer计时器实现计时.停止.暂停.重置功能! 一.简介 Chronometer的用法很简单,它支持如下用法: getBase():返回时间. setBa ...

  5. android ScrollView滚动距离和判断滚动停止状态

    今天很高兴,自己解决了判断ScrollView滚动停止的监听,现在分享给大家. 因为ScrollView没有像listView中的setOnScrollListener()监听,当然也就没有SCROL ...

  6. AndroidStudio_android通过服务,检测本程序是否已经终止运行_终止运行后发送通知给Http服务器---Android原生开发工作笔记246

    先做的一个项目,大体是,我这边如果程序已经停止,需要发送一个通知给远程的Httpserver服务器, 然后,远程服务器会通过websocket,通知,显示在大屏上的页面,去清空大屏数据,这样就有问题了 ...

  7. 【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 FFmpegAndroid 框架 )

    文章目录 一.推荐开源项目 二.Android 中执行 FFMPEG 指令 1.导入依赖 2.Java 代码编写 3.使用时的代码示例 三.博客资源 一.推荐开源项目 最近需要在 Android 中进 ...

  8. android服务进阶,我的Android进阶之旅------Android服务的生命周期回调方法

    先引用一段官网上的文字 ======================================================================================== ...

  9. 【Android 进程保活】应用进程拉活 ( JobScheduler 拉活 | JobScheduler 使用流程 | JobService 服务 | 不同版本兼容 | 源码资源 )

    文章目录 一. JobScheduler 用法简介 二. JobScheduler 拉活完整代码 1. JobService 2.清单文件 3.启动 JobScheduler 任务 4.运行效果 三. ...

  10. android 8.0手机开服务端,Android 8.0 + Service开启方式兼容处理

    Android 8.0 + ,对后台服务进行了限制了.如果依然采用之前startService()方式. 会导致问题. 前后台服务的一些区别: 有人可能会问,后台服务我们可以自己创建 ONGOING ...

最新文章

  1. 【MPI高性能计算】用集合通信改进梯形求和积分
  2. 开机慢 不换SSD如何提升Windows 10开机速度
  3. JDK源码系列(2)-Object类
  4. 【2022最详细--SVN客户端安装教程】
  5. 3D建模、处理软件及部分算法库简介
  6. 压力传感器如何直接连接电脑笔记本采集数据表格导出
  7. 流量计算机标准,-流量计执行标准
  8. 吊打jd_seckill,Go语言版免配置抢茅台程序,实力接盘~
  9. MyEclipse配置jdk
  10. [IOT] 自制蓝牙工牌办公室定位系统 (一)—— 阿里物联网平台概览及打通端到云(硬核·干货)...
  11. Python数据结构——对有序表二分查找
  12. MAC 打开所有来源的程序
  13. Mybatis 映射文件
  14. 焦点损失函数 Focal Loss 与 GHM
  15. CF14E Camels
  16. Android Http请求方法汇总
  17. PS修改支付宝余额截图
  18. 500分能上的计算机院校,高考500分上下怎么选大学?推荐这几所学校
  19. POJ3179 Corral the Cows 离散化 二分 前缀和
  20. Cellant:中文基站+google地图+轨迹记录+自制基站数据库

热门文章

  1. mysql临时开启二进制_mysql二进制安装 - yunwei-LS的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. hdu1023-----卡特兰数
  3. 音乐机器人活动教案_幼儿园小班音乐教案小熊跳舞律动活动反思【幼儿教案】...
  4. 怎么让拿到的字符串类型的值去掉双引号显示_python入门系列:Python数据类型
  5. linux QT 结束当前进程_Linux桌面进化史
  6. 在线教育与计算机网络的融合发展,[浅谈线上教育和线下教育的融合]
  7. mysql主从搭建_手把手教你搭建MySQL主从架构
  8. hbase集群 数据写入_大数据入门必学 - Hbase集群搭建
  9. c 生成html的div,createElement动态创建HTML对象脚本代码
  10. linux 用户及用户授权