即使用户强制关闭服务,如何自动重新启动服务?

2023-12-08

我希望服务在我的应用程序中始终运行。所以我想重新启动它,即使它被用户强制关闭。肯定有办法做到这一点,就像 Facebook 等应用程序正在做的那样。这不是使用推送通知完成的,即使互联网关闭,Facebook 也会重新启动其服务。


首先,它是真的非常糟糕的模式强制运行服务违背用户意愿.

无论如何,您可以使用以下命令重新启动它BroadcastReceiver它处理发送自的广播onDestroy()您的服务。

StickyService.java

public class StickyService extends Service
{
    private static final String TAG = "StickyService";


    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e(TAG, "onStartCommand");
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        sendBroadcast(new Intent("YouWillNeverKillMe"));
    }

}

重新启动ServiceReceiver.java

public class RestartServiceReceiver extends BroadcastReceiver
{

    private static final String TAG = "RestartServiceReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e(TAG, "onReceive");
    context.startService(new Intent(context.getApplicationContext(), StickyService.class));

    }

}

声明清单中的组件 file:

    <service android:name=".StickyService" >
    </service>

    <receiver android:name=".RestartServiceReceiver" >
        <intent-filter>
            <action android:name="YouWillNeverKillMe" >
            </action>
        </intent-filter>
    </receiver>

开始StickyService在组件中(即Application, Activity, Fragment):

startService(new Intent(this, StickyService.class));

OR

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

即使用户强制关闭服务,如何自动重新启动服务? 的相关文章

  • 为什么将函数参数声明为最终的?

    我目前正在阅读 Sams 出版的 24 小时自学 Android 应用程序开发 一书 我对 Java Android 或其他方面还比较陌生 我对 ActionScript 3 有非常扎实的背景 它与 Java 有足够的相似之处 因此该语言本
  • Delphi XE7 Android 全屏(隐藏软键)

    如何在XE7中全屏显示 隐藏顶部 标题 和底部 软键 工具栏 在 XE6 中 我可以通过在应用程序部分写入来调整 AndroidManifest 以使我的应用程序全屏显示并且没有操作栏 android theme android style
  • KitKat(及更低版本)设备上的 Android Material Design

    我将在我们学校开发一个 Android 应用程序作为一个项目 我想使用 Google 的新 Material Design 但我知道它仅适用于 Android L 设备 Jack Underwood 最近发布了名为 Today Calend
  • (Ionic 2)尝试回退到 Cordova-lib 执行时发生错误:TypeError:无法读取未定义的属性“then”

    Edit 使用 ionic 2 时会发生这种情况 我知道它还不稳定 但我认为可能有一些解决方案 因为其他人似乎没有遇到这个问题 Edit end 由于某种原因 我在尝试使用 ionic build android 和 ionic build
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 设置从 Facebook 登录获取用户电子邮件 ID 的权限

    我在用着Facebook 3 0 SDK对于安卓 我必须实施Facebook登录 我正在访问用户的基本信息 例如姓名 用户 ID 但我也想访问用户的电子邮件 我浏览了很多博客和论坛 但不知道该怎么做 我正在使用我自己的 android 按钮
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • 已经使用 AsyncTask doInBackground 但新数据未显示

    我使用 AsyncTask 创建一个聊天室来接收消息 因此它总是检查即将到来的消息并将其显示给客户端 但代码似乎无法按我希望的方式工作 在客户端只显示所有旧数据 新数据不显示 因为当我尝试从服务器发送消息时 新数据没有显示在客户端中 我对这
  • 从 Firebase 数据库填充微调器

    public class MainActivity extends AppCompatActivity DatabaseReference reference Spinner areaSpinner ArrayList
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • Android相机意图:如何获取全尺寸照片?

    我正在使用意图来启动相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE getParent startActivityForR
  • Android Studio:无法启动守护进程

    当我尝试在 Android Studio 中导入 gradle 项目时 遇到以下错误 Unable to start the daemon process This problem might be caused by incorrect
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 在webview android中加载本地html文件

    我正在尝试在 android 的 webview 中加载 html 文件的内容 但是 它给了我 网页不可用错误 如果我尝试使用谷歌或雅虎等网站 它们就会起作用 html文件位于src gt main gt assests gt index
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • C 运行时静态链接与动态链接中的内存分配

    我的程序的架构涉及插件 dll 和exe 显然 我们是唯一的插件提供商 有人告诉我 如果我们静态链接 c 运行时 在插件中分配内存然后在 exe 代码中释放它是一个潜在的问题 但是 如果我们动态链接它 则只有一个堆 而 c 运行时可以访问所
  • 访问路径“d:\$RECYCLE.BIN\S-1-5-21-494745725-312220573-749543506-41600”被拒绝

    我是 C 新手 我有一个文本框 可以在其中输入要搜索的文件和一个 搜索 按钮 在搜索时钟上 我希望它填充文件夹中的文件 但出现上述错误 下面是我的代码 string directories Directory GetDirectories
  • 无需 JavaScript 即可轻松实现等高 DIV?

    到目前为止 我主要使用基于表格的布局 但由于它被认为是过去的事情 所以现在我承担了学习基于 DIV 的布局的任务 到目前为止 对我来说最烦人的挑战之一是找到一种方法来获得等高的 DIV 该 DIV 可以在所有主要浏览器上运行 不依赖于 Ja
  • 错误 C2679:二进制 '<<':找不到采用 'std::string' 类型的右侧操作数的运算符(或者没有可接受的转换)

    这是我的代码 如何修复这个错误 include stdafx h include
  • 如何检测 Highcharts 图表中点的双击或长按?

    Highcharts 提供了检测图表点点击的机会 但是有可能吗 检测其他事件 例如双击或鼠标按下事件 提前致谢 每个组件只支持某些事件 例如图表组件会检测addSeries click load redraw and selection 我
  • 索引枚举的值,而不是字符串

    是否可以使用 Solrnet 索引 Enum 的值而不是其字符串表示形式 假设我必须遵循以下枚举 Serializable Flags public enum Gender Male 0 Female 1 并将 solr 属性添加到Gend
  • 使用react-router-v4对路由进行身份验证

    我正在尝试写Authentication检查我的DashBoard 但函数本身没有被调用 谁能给我一些解决方案吗 我正在使用 ReactJs 进行开发 这是路线部分
  • 我收到错误“DELETE 语句与 REFERENCE 约束冲突”

    我尝试用外键截断表并收到消息 无法截断表 因为它被 FOREIGN KEY 约束引用 我阅读了很多有关该问题的文献 并认为我通过使用删除找到了解决方案 DELETE FROM table name DBCC CHECKIDENT table
  • 没有 Boost.Serialization 的序列化

    我正在尝试为我的代码实现一个简单的序列化 反序列化方法 以便能够使用 MPI 通过网络传递对象 在理想的世界中我会使用Boost Serialization and Boost MPI为此 但它们没有安装在我有权访问的某些集群上 因此我正在
  • 需要 Microsoft Visual C++ 10.0(无法找到 vcvarsall.bat)

    我尝试使用以下命令在 Windows 8 1 上安装 ephem 模块 pip install ephem 但我收到此错误 Microsoft Visual C 10 0 is required Unable to find vcvarsa
  • Knockout JS 映射插件混乱

    我很困惑在使用映射插件时应该何时何地声明我的 viewModel 这是我的 json 文件 members memberid 001 membername Jason memberid 002 membername Bob 这是 html
  • 如何使用 hibernate 和 Legacy 数据库修剪 char 字段 pojo 中的空格

    我的表的列为 char 5 无法将其更改为 varchar 5 因此 当我使用 hibernateTemplate 从表中获取值时 它会返回带有实际的单个字母值的添加空格 客户修复是使用 trim 方法检查 NPE 但是我们是否有提供的方法
  • SQL 迭代所有表

    我正在运行以下代码以从具有特定列的所有表中提取所有相关行 外层IF应该检查该迭代的表中是否存在该列 如果没有 它应该完成该迭代并移至下一个表 如果表中有GCRecord列 然后应该检查该表是否会返回任何记录 如果没有要返回的记录 则应结束该
  • data.table 中 cumsum 的平均版本(累积平均值)

    我有一些数据 library data table set seed 42 dat lt data table t 1 6 group rep 1 2 each 3 val runif 6 0 1 gt dat t group val 1
  • 如何在c中打印内存位

    我正在学习数字在内存中的表示方式 我想知道如何在内存中打印某些 int 和 float 变量的实际表示形式 二进制或十六进制 例如 我想看看当添加或减去这些数字导致溢出时会发生什么情况 如何访问内存并打印它 您需要将指向相关变量的指针分配给
  • Java 在文本区域右侧显示文本

    我遇到的问题ComponentOrientation RIGHT TO LEFT是 或 等字符或者 显示在左侧 我只需要从右到左绘制文本 但使用标准 西方 英语从左到右的文本字符表示法 如果不手动渲染文本 这可能吗 我无法生成您的问题 您可
  • 将 Jackson 注释添加到 swagger 生成的类

    我正在使用 swagger 来定义与我的网络服务器的合同 在 swagger 文件中 我定义了 REST 端点和请求 响应对象 我想添加注释 JsonInclude Include NON NULL 到我的招摇班级的一个领域 swagger
  • 动态包含安全

    有没有什么方法可以安全地包含页面而不将它们全部放入数组中 if preg match a z0 9 GET page page GET page php tpl GET page html if file exists page inclu
  • 如何使用 AJAX 进行重定向?

    我有以下代码 function get login hideshow loading2 1 error 0 ajax type POST url The URL data logins serialize dataType json suc
  • 即使用户强制关闭服务,如何自动重新启动服务?

    我希望服务在我的应用程序中始终运行 所以我想重新启动它 即使它被用户强制关闭 肯定有办法做到这一点 就像 Facebook 等应用程序正在做的那样 这不是使用推送通知完成的 即使互联网关闭 Facebook 也会重新启动其服务 首先 它是真