问题标签 [foreground-service]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 不可阻挡的服务
我尝试编写一个始终监控手机电量的应用程序,因此我尝试构建不可阻挡的服务。但是现在,当我关闭应用程序时,它没有向我发送任何通知。
这是我的代码:
AndroidManifest.xml
MainActivity.java(代码的主要部分)
BootReceiver.java
}
NotificationService.java
}
将不胜感激任何帮助,因为我无法在一周内解决这个问题。
android - Android保存图像(经过一些处理)最佳方法
我已经从相机中获取了图像,并希望在经过大约 10 秒的处理后将其保存到一个目录中。我尝试了以下方法:
1)AsyncTask(问题:如果用户关闭(滑动)应用程序,则 asyncTask 被杀死)
2)意图服务(问题:与Asynctask相同)
3)前台服务(问题:挂起应用程序的UI)
4)在 UI 线程上运行(问题:挂起应用程序)。
所以我的问题是我应该用什么来保存我的图像(经过一些处理),这样即使应用程序关闭并且 UI 没有挂起(冻结),所有任务也能完成。
任何帮助,将不胜感激。
android - 如何将 startForeground 与 NotificationCompat.Builder 一起使用?
使用上面的代码在后台运行服务。但是当活动关闭时,服务调用 onDestroy
android - Android BLE 前台服务
我在前台服务上工作的 BLE 通信遇到了一些问题。虽然服务上的逻辑工作正常,但如果活动是打开的,每次蓝牙设备在范围内时,我的服务都会做它必须做的事情。但是在我关闭或暂停活动后,我的服务只工作一次,它似乎忽略了扫描回调并且不做任何事情。
预期的行为应该是,即使在主要活动关闭时,服务也应该找到并执行关联的逻辑。
android是否有可能因为我失踪的某种原因而忽略了扫描回调?
提前致谢
android - 当我刷出我的应用程序(在其他进程中运行)时,在单独进程上运行的 Android 服务被杀死
与我的真实应用程序相比,我有一个 Android 服务(Servcie 接口的实现)在单独的进程上运行。不幸的是,当我离开我的真实应用程序(我在其中单击按钮启动我的服务)并从任务管理器中将其刷出时,我的服务也被杀死了。
我知道这里有很多这样的问题,但不知何故,没有人针对我的具体星座中的问题,或者他们的回答含糊不清。
所以在我的清单中,我有类似的东西:
我首先使用了 IntentService,但也切换到了自己的服务接口实现(消除了 IntentService 成为故障点),它看起来像:
我在一个特殊按钮上的 onClick-Listener 中启动我的服务,带有一个明确的 Intent,它看起来像下面这样:
我的意图是在用户离开应用程序时保持服务运行,以便服务可以完成下载和存储一些重要数据。当用户再次回到我的应用程序时,他可以查看数据(这就是我在单独的进程中执行它的原因)。那么这可能吗?
我现在的假设是,Android 以某种方式注意到我的服务只是被我的应用程序使用(由于清单中缺少 IntentFilters 或显式调用而不是过滤器?!)因此当我的应用程序关闭时立即杀死它(即使在运行时如您在上面看到的那样 ForegroundService )。
在您看来,这是否可行,并且服务调用中的一些更改可能会解决此问题,还是我对服务的概念有误?
(最后一点:没有调用 onLowMemory-Method -> 没有日志条目。)
android - 前台服务通知按钮在重新启动活动(绑定到服务)时工作异常
我有一个MusicPlayerActivity
(它的 launchMode 是 Manifest 中的 SingleTop)和MainActivity
,都绑定到一个MusicService
. 一切似乎都很好,但后来我看到了一个错误:播放第一首歌曲没有问题。但是当我播放第二首歌曲并尝试使用通知按钮来控制它时,就像按下了两次一样。因此,暂停会导致再次播放,下一次会导致跳过一首歌曲。
我尝试了什么: -我认为这是由于使用了 and 的组合startForeground()
,NotificationManager
所以我删除了所有NotificationManager
部分并开始使用startForeground
,即使是为了更新通知(我希望这不是错误的做法)。但它没有用。
我认为问题在于:
我不确定,但我认为问题在于创建MusicPlayerActivity
. 对于第一首歌,它是好的和绑定的,那么onBackPressed()
,MainActivity
是MovedToFront
。然后当用户从中选择另一首歌曲时,会创建MainActivity
一个新的实例并再次与服务绑定。歌曲播放良好,但通知开始变得奇怪。MusicPlayerActivity
这就是我在以下playSong()
方法中创建通知的方式Service
:
这就是我绑定MusicPlayerActivity
到服务的方式:
android - 如何防止系统杀死我的“前台”服务?
我正在构建一个类似于 Runtastic/Endomondo/Strava 的应用程序,它需要一个服务来获取 GPS 位置,直到用户明确地停止它。
我运行了 Runtastic 和我的应用程序来尝试它。Runtastic 运行良好。但是我的应用程序丢失了所有数据,尽管通知还在状态栏中。我认为服务会自行重启,或者 Android 会杀死我的服务。
我在具有 2GB RAM 的 LG G3 中测试了该应用程序,我认为它足以运行 Runtastic 和我的应用程序。
所以,我的问题是¿保持服务在后台运行或避免系统杀死它的最佳方法是什么?我想模仿 Runtastic/Endomondo/Strava 的逻辑。这意味着,电池寿命无关紧要。
我试过用
START_STICKY
方法上的标志启动服务onStartCommand
。我试图用
startForeground
方法启动服务我试过获取一个
WakeLock
按照文档(https://developer.android.com/guide/topics/processes/process-lifecycle.html),我的服务应该是“一个可见的过程”。
这是我的服务代码的要点:https ://gist.github.com/cpalosrejano/cc1ab73c4819c3e84234f2d619421b93
¿ 我应该在 Manifest.xml 中将服务声明为进程吗?
android - 一旦服务不再处于前台,就可以取消来自前台服务的通知
我有一个音乐控制通知,允许用户开始/停止音乐。我想要与 Google Play 音乐应用通知完全相同的行为:当音乐播放时,服务在前台,通知不可取消,当音乐不播放时,服务不再在前台,通知可以删除。它工作正常,但是当我取消服务的前台时,通知会在重新出现之前迅速删除。
这是我的代码,首先是我如何构建通知:
以下是我开始和更新通知的方式:
如果我使用 stopForeground(false),通知在运行后仍然无法取消。如果我使用 stopForeground(true),通知会很快被删除,然后再次添加,这会产生奇怪的闪烁。
如何在服务退出前台后获得可取消的通知,而无需删除然后再次添加通知?
android - 从 Asynctask 更新通知进度条时,应用程序可能在其主线程上做太多工作
我创建了一个从前台服务下载文件的演示,并在通知进度栏中显示下载进度。我在服务中使用 asynctask,在 asynctask 中我使用 HttpUrlConnection 从 Internet 下载文件并在 onProgressUpdate() 中更新进度。我显示以下错误 跳过 145 帧!应用程序可能在其主线程上做了太多工作。
和电话被绞死。
和我的异步任务
请帮助我我能做些什么来解决这个问题。提前致谢。
android - 为什么我的服务被系统杀死了?
我正在学习如何在 Android 中使用服务。我正在开发一个应用程序来了解它们。当用户按下“开始”按钮时,应用程序将启动服务。该服务将一直运行,直到用户按下“停止”按钮(Alpify 等应用程序或类似应用程序)
在 AndroidManifest 中,我的服务声明如下:
从活动中,我按如下方式启动服务:
然后我打开其他消耗大量 RAM 的应用程序(Clash Royale、Instagram、Facebook 等),我的服务被系统杀死。
我实现onTrimMemory(int level)
了方法来查看发生了什么。在我的服务被杀死之前,logcat 给了我以下信息:
我已经阅读了onTrimMemory()
方法的行为。文档说,当我收到该代码时,我必须释放未使用的对象。但是我的服务还没有代码。
我尝试了什么:
largeHeap="true"
在 AndroidManifest.xml 文件中设置- 开始服务
startForeground()
START_STICKY
服役中的旗帜- 获得一个
wakelock
我的服务代码:
现在,我的问题:
怎么可能,当我的应用程序被系统杀死时,Runtastic 应用程序正在运行?