在我的应用程序中,我有一个Service
在后台(和前台)运行。
在这个Service
中,有一个Countdown Timer
,当它完成时,我想在某个Activity
中启动应用程序并在Activity
中自动执行一些操作,即使我的应用程序被杀死或关闭,我也希望它能正常工作。
我看到了一些答案,这是其中之一,但它对我不起作用。我找到了一个更好的解决方案,并将其作为答案发布在下面,但仍然只有在应用程序关闭但未完全关闭时才有效。
如何从后台Service
启动活动
,即使应用程序已关闭或关闭?
请参阅此答案。
此答案建议启用ScreeanOverlay
设置,因为从Android 10及更高版本开始,您不再可以仅通过调用我使用的行从后台打开活动。
要使其工作,您必须通过Manifest.xml
添加此权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
然后用户必须在其他应用程序上启用显示设置
我搜索了一个选项,让用户更容易地使用这个设置,并找到了这个答案
这个答案给出了一个代码,可以将用户重定向到其他应用程序上的显示
设置
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 0);
}
然后我用通知的内容(文本)指导用户如何启用设置
一旦设置被启用,我在工作前使用过的行\
那么问题解决了?
上面描述的整个配置都可以工作,但前提是应用程序没有被杀死。
如果应用程序被杀死并且我尝试上面列出的方法,应用程序会加入最近的应用程序列表,但不会打开并显示。
正如NitzanDaloomy在他的回答中所建议的那样,我们可以使用SYSTEM\u ALERT\u WINDOW
,但当应用程序被杀死时,它不会打开,而是将其放入最近的列表中。现在,由于我们的应用程序不再关闭(它在后台),我们可以使用startActivity(Intent-Intent)
然后,应用程序将打开
你需要像这样启动前台服务
Intent intent = new Intent(this, AppService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent);
}
然后把这一行添加到Main中。xml
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
我有一个要求,执行一个任务,在正好每5分钟。我考虑了多个选项,并尝试使用类来触发任务来实现这一点。但是,当应用程序被杀死时,我无法触发警报。 当应用程序打开或在后台运行时,警报似乎工作得完美无缺,但一旦我退出应用程序,它似乎完全停止了。 我的实现是使用函数,并自己处理重复这个过程。最初的警报在5秒后触发,然后在此之后每5分钟触发一次。 MyService.kt:
另外,是否有可能在保留用户数据的同时清除使用ADB的应用程序的缓存?似乎清除了所有用户数据。我只想清除缓存。 我之所以这么问是因为我正在对一些用户应用程序进行性能测试。为了使每个测试有效,我希望确保没有任何用户应用程序有任何任务,活动,服务和缓存已经在后台。
我的目标是每12小时更新一次我的应用令牌(使用网络请求),无论应用程序是在后台还是被杀死,所以我使用workmanager来解决这个问题。但周期性任务仅在应用程序处于后台或打开状态时有效,但当我杀死应用程序时,周期性任务停止以更新我的应用程序令牌。 这是我的代码: 我正在使用workmanager 2.4.0版本
我有一个通过FCM数据消息触发来电的应用程序(优先级:高,没有通知有效载荷)。当app处于前台或后台时,app接收呼叫。对于上述情况,在锁定屏幕中接收通知(来电)。 但由于某种原因,当关闭应用程序或从多任务托盘中刷卡时,电话就不再接到了。我认为服务被扼杀了。我能做什么? 工作流当收到FCM通知时,一个后台服务启动,然后该服务将自身更改为具有“来电”通知的前台服务。我也在使用全屏意图。下层是我用来服
我在写一个玩家轮流参加的游戏。在一个回合结束时,我将我的数据发送到服务器,并更新我的数据库,让我知道现在轮到另一个玩家了。问题是,如果有人在中途扼杀了应用程序怎么办?我是说去找任务经理然后杀了它。 编辑:我还应该提到这是在一个片段中,我正在检查这个,但不要认为这会有什么不同。