- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想在Service
类中实现startForeground()
方法,防止服务自残。
谁能发给我实现这个方法的代码?
最佳答案
Jovan,这是为 2.0+ 和 1.6- 制作兼容代码的方法(代码向您展示了如何检测哪个兼容) http://android-developers.blogspot.com/2010/02/service-api-changes-starting-with.html
对于 2.0+,我整理了一些示例代码(使用 startForeground)。请注意,现在不推荐使用某些代码,但是 Notification.Builder 使用 API 级别 11 (3.x),这意味着在大多数手机使用兼容的 Android 版本之前我不会使用它。由于绝大多数手机现在运行的是 2.x 的某个版本,我认为跳过兼容性检查是足够安全的。
final static int myID = 1234;
//The intent to launch when the user clicks the expanded notification
Intent intent = new Intent(this, SomeActivityToLaunch.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendIntent = PendingIntent.getActivity(this, 0, intent, 0);
//This constructor is deprecated. Use Notification.Builder instead
Notification notice = new Notification(R.drawable.icon_image, "Ticker text", System.currentTimeMillis());
//This method is deprecated. Use Notification.Builder instead.
notice.setLatestEventInfo(this, "Title text", "Content text", pendIntent);
notice.flags |= Notification.FLAG_NO_CLEAR;
startForeground(myID, notice);
将此代码放入您的服务的 onStartCommand()
中,您就可以开始了。 (但您可以将这部分代码放在您的服务中的任何位置。)
附:要停止服务处于前台,只需在服务中的任何位置使用 stopForeground(true);
关于android - 在 Android 中实现 startForeground 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3687200/
startForeground() 需要创建 NotificationChannel 以便在 Oreo 设备的 Launcher 图标上显示徽章编号 1 如何以编程方式隐藏/禁用它? 因为 Galax
我正在启动一个前台服务,它使用 HandlerThread 来执行一些长时间运行的任务。 它工作正常,但是,通知没有显示我的标题或内容(它说“xxx is running”点击获取更多信息或停止应用程
我创建了一个发送电子邮件的服务 (EmailService) ...每次我需要用我的应用程序发送电子邮件时,它都会启动该服务并通过 Intent 传递电子邮件的 ID... 我正在使用 startfo
我创建了一个服务。我启动了这个服务前台,但是当我午餐我的应用程序时,一个应用程序崩溃了。我添加了 startServiceOreoCondition 我读到了这个但是它对我没有帮助 @Override
我正在尝试使用 while 循环来每秒更新一次通知。但是在 2.3.3 及以下版本中,它会因这些 logcat 错误而崩溃: 08-14 07:30:17.394: E/AndroidRuntime(
我正在尝试让我的 Service 在前台运行。我尝试使用 this example (请查看“在前台运行服务”部分),但 startForeground() 实际上并没有显示我的通知。并且不会抛出任何
我想创建一个服务并让它在前台运行。 大多数示例代码都有通知。但我不想显示任何通知。那可能吗? 你能给我一些例子吗?有没有其他选择? 我的应用服务正在播放媒体播放器。 如何让系统不杀死我的服务,除了应用
所以我不确定在哪里/如何实现此方法以使我的服务在前台运行。目前我在另一个 Activity 中通过以下方式开始我的服务: Intent i = new Intent(context, myServic
错误如下,我正在尝试启动此服务以提供持续的传感器更新,目标是注销传感器事件直到我停止服务,我只需要能够启动此服务来收集数据直到我停止服务: android.app.RemoteServiceExcep
背景:在 android 中使用 startForeground() 命令时,用户必须看到一条通知,说明您的应用程序在前台运行。 我的问题:我正在考虑使用以下 command,而不是在我的服务中调用
问题 我想知道我们是否需要获取 WakeLock,或者 service.startForeground() 命令是否为我们完成了?我没有在文档中找到任何内容。 目标 我们希望删除可能会减慢服务启动速度
我正在使用 startForeground()调用我的一项服务: NotificationCompat.Builder notifBuilder =
我遇到了一个问题,即使我持有唤醒锁并且调用了 startForeground,我的服务还是被终止了。当平板电脑 (ASUS Transformer TF101) 发生这种情况时,停止服务而不调用 on
是否可以防止 Service(startForground) 被 os 杀死?我用它来播放音频但是当我使用另一个需要更多资源的应用程序(愤怒的小鸟去)一段时间时它被杀死了。在日志中,我看到应用进程被
我有一个 IntentService,我想通过持续通知让它保持粘性。问题是通知出现然后立即消失。该服务继续运行。我应该如何在 IntentService 中使用 startForeground()?
我有一个包含两项服务的应用。 一个是使用 WindowManager 显示在其他应用程序上 float (覆盖)的 UI。另一个是使用 GooglePlayAPI 进行位置跟踪。我的应用始终运行这些服
我的 IntentService 有问题。每次我启动服务时,一旦服务空闲,就会调用 onDestroy() 方法。我将我的服务设置为在前台运行,尽管如此,该服务仍会立即被终止。我的应用程序中只有一项其
即使有前台服务,我的 Android 应用程序也会在后台被杀死。这是漏洞 list :
作为测试,我从我们拥有的工作服务中删除了“startForeground(通知)”,它似乎仍在工作。 我们是否不需要在 Android O 及更高版本上发布工作服务的前台通知? 我无法找到这方面的具体
我正在使用 Xamarin Android 3.5 开发一项服务。我们的应用程序面向 Android 8.1 (API 27 - Oreo)。我希望该服务作为前台服务运行。但是,当我运行该服务时,出现
我是一名优秀的程序员,十分优秀!