在Android Oreo中关闭应用程序时,剪贴板剪辑更改侦听器无法正常工作

问题描述 投票:0回答:2

当应用程序处于后台或关闭时,我正在按照以下教程检查复制文本事件。

https://github.com/twaddington/Android-Clipboard-Monitor/blob/master/src/com/example/clipboardmonitor/service/ClipboardMonitorService.java

现在,当应用程序在android oreo中关闭时,它无法正常工作。是否有任何替代的ClipboardMonitorService作为后台服务在API 26之后被删除。

android service clipboard clipboardmanager
2个回答
1
投票

作为Android Oreo的一部分,对后台服务有一些限制。我不认为你的问题可以解决。请refer this post了解更多。该帖子中解释了所有不同类型的执行模型。我知道我没多大帮助,但我想我会分享我所知道的。


0
投票

参考Broadcast receiver is not working in lollipop after application closed from task manager

请参阅以下内容,

Android Broadcast receiver not executed on application close

我还认为您可能想要了解如何设置优先级。请阅读以下内容,

AndroidManifestIntentFilter_priority

int AndroidManifestIntentFilter_priority指定处理特定Intent的相对重要性或能力。对于接收器,它控制它们执行以接收广播的顺序(注意,对于异步广播,忽略该顺序)。对于活动,这提供了有关活动处理意图的好坏的信息;当多个活动与意图匹配并具有不同的优先级时,只有具有较高优先级值的活动才会被视为匹配。

仅在您确实需要强制接收广播的特定顺序时才使用,或者希望强制将活动置于其他人之外。该值是单个整数,更高的数字被认为更好。

必须是整数值,例如“100”。

这也可能是对资源(格式为“@ [package:] type:name”)或主题属性(格式为“?[package:] [type:] name”)的引用,其中包含此类型的值。

这对应于全局属性资源符号优先级。

常数值:2(0x00000002)

正如我尝试使用的各种帖子和博客所建议的那样

  1. Intent.Flag_Include_Stopped_Packages
  2. 清单中的接收器android:process =“:remote”
  3. 清单中的接收器android:exported =“true”
In Manifest:

<receiver android:name=".BroadcastReceiver" android:enabled="true"
  android:exported="true" 
  android:process=":remote">
</receiver>

Android 8.0 Behavior Changes

后台执行限制

作为Android 8.0(API级别26)为改善电池寿命而引入的更改之一,当您的应用进入缓存状态且没有活动组件时,系统会释放应用程序所拥有的任何唤醒锁。

此外,为了提高设备性能,系统会限制未在前台运行的应用程序的某些行为。特别:

  • 现在在后台运行的应用程序对可以自由访问后台服务的速度有限制。
  • 应用无法使用其清单来注册大多数隐式广播(即,不是专门针对应用的广播)。默认情况下,这些限制仅适用于以O为目标的应用。但是,即使应用未定位O,用户也可以从“设置”屏幕为任何应用启用这些限制。

Android 8.0(API级别26)还包括对特定方法的以下更改:

  • 如果针对Android 8.0的应用程序在不允许创建后台服务的情况下尝试使用该方法,则startService()方法现在会抛出IllegalStateException。
  • 新的Context.startForegroundService()方法启动前台服务。即使应用程序在后台,系统也允许应用程序调用Context.startForegroundService()。但是,应用程序必须在创建服务后的五秒内调用该服务的startForeground()方法。

有关更多信息,请参阅后台执行限制。

ClipboardManager

剪贴板服务的接口,用于在全局剪贴板中放置和检索文本。

ClipboardManager API本身非常简单:它包含以原子方式获取和设置当前主剪贴板数据的方法。该数据表示为ClipData对象,它定义了应用程序之间数据交换的协议。

欲了解更多信息请访问https://developer.android.com/reference/android/content/ClipboardManager

© www.soinside.com 2019 - 2024. All rights reserved.