服务在短时间内(1分钟)后被终止

2024-02-15

我创建了一项服务,其工作是在用户关闭应用程序时清除通知。一切都运行得很好但是有时,当应用程序在后台运行超过 1 分钟时,服务就会被终止(这意味着通知不会被取消)。 为什么会发生这种情况?我认为停止服务的唯一方法是使用 stopSelf() 或 stopService()。

public class OnClearFromRecentService extends Service {
    private static final String TAG = "onClearFromRecentServic";
    private NotificationManagerCompat mNotificationManagerCompat;

    @Override
    public void onCreate() {
        super.onCreate();
        mNotificationManagerCompat = NotificationManagerCompat.from(getApplicationContext());
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "Service Started");
        return START_NOT_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "Service Destroyed");
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        //Put code here which will be executed when app is closed from user.
        Log.d(TAG, "onTaskRemoved was executed ");
        if (mNotificationManagerCompat != null) {
            mNotificationManagerCompat.cancelAll();
        } else {
            Log.d(TAG, "onTaskRemoved: mNotifManager is null!");
        }

        stopSelf();
    }
}

我从启动屏幕 Activity 启动服务,如下所示:startService(new Intent(this, OnClearFromRecentService.class));

Also here are some Log messages: enter image description here


尝试返回START_STICKY形式onStartCommand。
然后系统将尝试重新创建。
check this https://developer.android.com/reference/android/app/Service.html#START_STICKY官方文档。

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "Service Started");
        return START_NOT_STICKY;
    }

如果您还希望重新传递 Intent,您也可以尝试返回 START_REDELIVER_INTENT。

START_REDELIVER_INTENT

从 onStartCommand(Intent, int, int) 返回的常量:如果这样 服务的进程在启动时被终止(从返回后) onStartCommand(Intent, int, int)),那么它将被安排为 重新启动,最后一次传递的 Intent 通过再次重新传递给它 onStartCommand(意图,int,int)。

来自文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

服务在短时间内(1分钟)后被终止 的相关文章

  • 处理 Android 锁屏上的音量变化?

    我想做的是 能够在 android 4 4 上的锁屏上捕获音量增大 减小按钮操作 Google Cast 设计清单 https developers google com cast docs design checklist sender
  • 导航组件参数默认值

    在导航组件中 将参数从第一个片段发送到第二个片段时 默认值不会从导航图中获取哪个集合 这是我的代码 导航图 xml
  • 毕加索磁盘缓存

    我正在使用 Picasso 从 URL 加载图像 Picasso with getApplicationContext load product getImageUrl into imageView 据我所知 每次都会访问该网址 而不是缓存
  • BluetoothAdapter.getDefaultAdapter() 不返回 null

    这是我的第一篇文章 所以如果我做了一些愚蠢的事情 请告诉我 这个问题可能看起来与其他帖子类似 但或多或 少与我所看到的所有内容相反 关于该项目的事情 我正在开发 android 4 0 4 4 应用程序 我正在使用蓝牙 我正在运行 andr
  • Android 中的 java.util.Observable 是线程安全的吗?

    Android 中的 java util Observable 是线程安全的吗 这文档 http developer android com reference java util Observable html说只有deleteObser
  • 从 BroadcastReceiver 获取方法来更新 UI

    我正在尝试根据变量的变化更新用户界面BroadcastReceiver 因此 我需要调用一个扩展类的方法 以获取我提到的变量 BroadcastReceiver in MainActivity取决于但我无法以任何方式获得真正的返回值 扩展的
  • 在浏览器中打开 URL,即使我的应用程序为其注册了意图过滤器

    我的应用程序为某些 URL 注册了一个意图过滤器 因为它可以处理来自这些 URL 的数据 但是 在应用程序内部 我想提供一个按钮来在浏览器中打开这样的 URL 也就是说 如果设置了默认浏览器 则在默认浏览器中打开它 否则提供一个选择器 就像
  • 如何使用 Swipe 视图实现 Android TabLayout 设计支持库

    我将使用 android TabLayout 设计支持库 但我不知道如何使用滑动视图 这是我的代码 XML
  • 我应该选择的最低 SDK 版本是多少? (截至2018年11月)

    据我所知 android studio 中默认的最小 SDK 设置是 15 我读到我应该增加它 因为没有多少人 或者可能没有 仍在使用该 android 版本 另外 我计划使用 android studio 中的一些新功能 这些功能仅适用于
  • Android 消费品:“已经拥有该商品”,但 inventory.hasPurchase() 为 false

    我被 Google In App v3 困住了 我测试了一次没有消费的购买 例如 当应用程序在购买和消费之间崩溃时 现在我找不到出路 如果我尝试再次购买 它会显示 您已经拥有该商品 但是当我测试所有权时 它说我不拥有它 Inventory
  • Android - 多次实例化一个片段?

    我正在创建一个在 ListView 中显示数据的应用程序 数据分为两种类型 热门 收藏夹 我有一个活动和两个片段 片段根据类别显示项目列表 我为此使用了 ListView 然后我有两个fragment layouts 它们在设计上完全相同
  • Android httpclient文件上传数据损坏和超时问题

    我在 Android 中上传图像时遇到问题 我正在使用 apache httpmime 4 1 lib 代码是这样的 MultipartEntity reqEntity new MultipartEntity HttpMultipartMo
  • Spotify 登录错误 INVALID_CLIENT:无效的重定向 URI android

    我正在制作一个包含 Spotify 集成的应用程序 我点击了此链接https developer spotify com technologies spotify android sdk tutorial https developer s
  • Android Drawable 绘图性能?

    在我看来 我有一个简单的 ARGB 可绘制对象 大约需要 2 毫秒才能绘制 但我可以在 0 5 毫秒内绘制与位图相同的文件 只是一些快速代码 我真的不能认为它是一个选项 优化可绘制对象的绘制速度的最佳方法是什么 这取决于可绘制的数量以及每个
  • 截图显示黑色

    我正在拍摄快照并创建缩略图 然后共享此图像 但缩略图显示全黑 我使用了以下代码 Bitmap bitmap View v1 v getRootView v1 setDrawingCacheEnabled true bitmap Bitmap
  • 在 android 版本 7.0 上膨胀类 android.widget.DatePicker 时出错

    我想显示弹出日期选择器并且我使用此代码 Calendar mcurrentDate Calendar getInstance int mYear mcurrentDate get Calendar YEAR int mMonth mcurr
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 从 sqlite 和 mysql 加载数据微调器

    我试试这个tutorial http nielpoenya blogspot com 2012 08 tutorial android spinner dari database html加载Spinner from sqlite and
  • 动态创建 JSON 对象

    我正在尝试使用以下格式创建 JSON 对象 tableID 1 price 53 payment cash quantity 3 products ID 1 quantity 1 ID 3 quantity 2 我知道如何使用 JSONOb
  • Android Espresso - 如果未选中,请单击复选框

    I have onView withId R id check box perform click 但我只想在尚未选中该复选框时执行此操作 我怎样才能在浓缩咖啡中做到这一点 我还想根据其之前的状态来切换复选框 开关 起初 我尝试用此方法打开

随机推荐

  • 从模态/弹出窗口中解开segue,导致开始/结束外观过渡的呼叫不平衡

    我有以下设置 导航控制器 gt VC1 Push gt VC2 PopOver 或 Modal Segue gt VC3 VC3 正在展开回 VC1 当从 VC2 到 VC3 的 Segue 为 PopOver 和 Modal 时 展开会以
  • Google Visualization - 在事件表排序中,将特定行保留为第一个可见记录?

    当用户单击标题进行排序时 我希望标记为 总计 的行保持为可见的第一行 我可以捕获表排序事件 如下所示 google visualization events addListener table getChart sort function
  • 不可行的函数模板的类型推导

    In 他的回答 https stackoverflow com a 22259156 420683 to 这个问题 https stackoverflow com q 22258054 420683以及评论区 约翰内斯 绍布 https s
  • 使用 Blogger API v3 和 Python 插入博客文章草稿

    我正在尝试使用 Blogger Api v3 客户端库发布一篇文章 https developers google com blogger docs 3 0 libraries https developers google com blo
  • NSPredicate 和数组

    我有一个简短的问题 我有一个NSArray洋溢着Cars 继承自 NSObject Car有 property NSString engine 也被视为 synthesize 现在我想使用过滤数组NSPredicate predicate
  • Bootstrap 中的固定页脚

    我正在尝试引导程序 http getbootstrap com 我想知道 如果内容滚动 如何修复底部的页脚而不使其从页面上消失 要让页脚粘在视口底部 请给它一个固定位置 如下所示 footer position fixed height 1
  • Vue.js v-if 对变量变化没有反应

    我正在使用 vue js 并且在正确使用 v if 方面遇到了一些困难 我正在尝试在模板内渲染条件模板 在创建的方法中 变量isloaded设置为 true 这应该会导致模板重新呈现并让 正在加载数据 消息消失 然而 日志表明 2s 的延迟
  • 如何添加 .NET Framework 安装先决条件

    我在 Microsoft Visual Studio 中有一个 C Windows 窗体项目2017 我添加了 Visual Studio 安装程序安装向导项目来为我的应用程序创建安装程序 这是我第一次使用安装程序项目 安装程序正确地具有
  • 按复杂标准合并/连接 2 个 DataFrame

    我有 2 个大型数据集 每个数据集有 70K 到 110K 我想关联 比较两者 并根据某些条件 标准查找 set2 中的哪些项目可以在 set1 中找到 我当前的策略是按公共字段对两个列表进行排序 然后运行嵌套for循环 执行条件if测试
  • 在客户端用 JavaScript 逐行读取文件

    您能帮我解决以下问题吗 Goal 在客户端 通过 JS 和 HTML5 类在浏览器中 逐行读取文件 无需将整个文件加载到内存中 Scenario 我正在开发应该在客户端解析文件的网页 目前 我正在阅读本文件中描述的文件article htt
  • 如何在同一端口中运行 Angular 和 Node.JS Express?

    这可能是重复的问题 但无法理解如何配置 FE 和 BE 一起运行它们 我已经经历过this https stackoverflow com q 39845526 and this https stackoverflow com q 4678
  • 使用“from x import *”记录文件

    sphinx 的 automodule 和其他自动功能可用于记录包含以下内容的模块from x import 声明不包含导入模块的所有文档 编辑 根据mzjn的观点 只要导入的方法 module 属性与模块名称不同 不应记录它们 然而 对于
  • FBSDKLoginManager 代码从 Objective-C 到 swift

    任何人请帮助我如何将 FBSDKLoginManager 代码转换为快速编程提前感谢我附上 Objective C 中的代码 IBAction btnFacebookPressed id sender FBSDKLoginManager l
  • 使用二维动态分配字符串创建动态分配结构

    我正在尝试扫描字母网格 cases是字母网格的数量 r c是每个网格的行数和列数 我想我可以创建一个内部包含二维数组的结构数组 我已经为此工作了几个小时 但它仍然给我带来问题 警告 警告 C4477 12号线 scanf s 格式字符串 s
  • dexing时如何查找错误原因:MethodHandle.invoke和MethodHandle.invokeExact

    我有一个项目在 Android Studio 或 Gradle 中构建时开始抛出此错误 com android tools r8 ApiLevelException MethodHandle invoke and MethodHandle
  • 使用 PHPUnit 发送 POST 请求

    我有一个 symfony 网站 我正在尝试进行一些单元测试 我有这样的测试 我尝试提交一些东西
  • 忽略 BinaryFormatter 序列化中的非序列化属性

    我有一堂课叫User它是 Serializable 并继承自基类IdentityUser实体框架类且不可序列化 我有房产在Booking类与类型User and Booking类是Serializable我正在尝试使用序列化预订对象Bina
  • 边框半径被内部 div 隐藏

    我有一个 div 作为内容框 并在其中有另一个 div 作为标题 外部 div 设置了 border radius 但内部 div 隐藏了它 HTML div div This is the title div div CSS box he
  • `jcmd PID GC.class_histogram`会在收集数据之前调用完整GC吗?

    当我跑步时jcmd PID help GC heap dump 帮助中明确指出会调用full GC 除非 all指定标志 GC heap dump 影响 高 取决于 Java 堆大小和内容 除非指定了 all 选项 否则请求完整 GC al
  • 服务在短时间内(1分钟)后被终止

    我创建了一项服务 其工作是在用户关闭应用程序时清除通知 一切都运行得很好但是有时 当应用程序在后台运行超过 1 分钟时 服务就会被终止 这意味着通知不会被取消 为什么会发生这种情况 我认为停止服务的唯一方法是使用 stopSelf 或 st