小编Rem*_*bel的帖子

当app被杀/在后台时,检测Android 7及更高版本中的连接变化

问题:

所以问题是我有一个应用程序,当连接WiFi(连接的SSID和其他信息)或断开连接(通过移动网络)时,它会向我们的后端发送请求.但是,随着Android 7/N及更高版本的更改,CONNECTIVITY_CHANGE和CONNECTIVITY_ACTION不再在后台运行.现在大多数情况下人们滥用这个广播,因此我完全理解为什么要做出改变.但是,我不知道如何在当前状态下解决这个问题.

现在我不是一个Android开发人员(这是一个Cordova插件),所以我指望你们!

预期行为: 即使应用程序被杀/在后台,每当WiFi切换连接时,应用程序都会被唤醒并发送请求.

当前行为: 应用程序仅在应用程序位于前台时发送请求.

到目前为止尝试过: 到目前为止,我已经移动隐藏的意图,从清单中侦听CONNECTIVITY_ACTION,并在应用程序的主要部分(插件)中手动注册它.这使得它只要应用程序在内存中就可以工作,但不能在冷启动或实际背景下工作

已经看过: 大多数答案谈论使用预定的工作来代替丢失的广播.我看到这是如何工作的,例如,重试下载或类似,但不适用于我的情况(但如果我错了请纠正我).以下是我已经看过的SO帖子:

当应用程序处于前台时,检测Android 7.0 Nougat上的连接更改

不推荐使用ConnectivityManager.CONNECTIVITY_ACTION

使用JobScheduler检测连接更改

Android O - 检测后台连接的变化

android android-7.0-nougat android-8.0-oreo

37
推荐指数
2
解决办法
3万
查看次数

iOS - 今日扩展小部件随着时间的推移而清

情况应该如此

适当的情况

我们有一个今天的小部件,根据相应应用程序中的数据设置,最多显示6个按钮.此数据使用app-groups共享.如果至少配置了一个按钮,它将显示如上图所示.如果用户未登录,或者未配置任何按钮,则会显示如下图所示的消息.

没有配置按钮

问题

在未打开应用程序几个小时(大约4到7之间)之后,窗口小部件将恢复为"未配置按钮"视图.

分析到目前为止

从app-group加载数据的方式是使用如下所示的代码完成的.(完整代码的要点)在我编写它的方式中,可以显示"无按钮配置"视图的唯一方法是buttons数组是否实际存在但长度为零.

我期望缓存清除或后台服务停止,但据我所知,应该更早地捕获异常:

  • 如果无法与app-group数据建立连接,userDefaults则应为nil,因此应显示"Not logged in in view".
  • 如果从未定义按钮,buttons则应为nil,因此应再次显示"未登录视图"

考虑到应用程序在后台不执行任何操作,应用程序本身无法更改按钮.

我尝试连接调试器时再现这个,但问题不会重现.

有没有人对如何解决这个问题或如何开始调试这一点有任何想法?

相关文件:

相关代码:

private struct sharedData {
        static var baseUrl: String?
        static var token: String?
        static var phoneDeviceId: String?
        static var buttons: Array<Button>?
    }

func loadData() {
        let groupIdentifier = "group." + NSBundle.mainBundle().bundleIdentifier!
        var groupIdArray = groupIdentifier.componentsSeparatedByString(".")
        groupIdArray.removeAtIndex(groupIdArray.count - 1)
        let appGroupIdentifier = groupIdArray.joinWithSeparator(".");

        let userDefaults = NSUserDefaults.init(suiteName: appGroupIdentifier)
        if (userDefaults == nil) {
            print("Error …
Run Code Online (Sandbox Code Playgroud)

ios swift ios-app-group today-extension swift2

9
推荐指数
1
解决办法
395
查看次数

在Spark/Scala中取消组合(键,列表(值))对

我有以下列方式格式化的数据:

DataRDD = [(String, List[String])]
Run Code Online (Sandbox Code Playgroud)

第一个字符串表示键,列表包含值.请注意,每个键的值数量不同(但绝不为零).我希望以这样一种方式映射RDD,即列表中的每个元素都有一个键值对.为了澄清这一点,想象整个RDD如下:

DataRDD = [(1, [a, b, c]), 
           (2, [d, e]),
           (3, [a, e, f])]
Run Code Online (Sandbox Code Playgroud)

然后我希望结果如下:

DataKV  = [(1, a),
           (1, b),
           (1, c),
           (2, d),
           (2, e),
           (3, a),
           (3, e),
           (3, f)]
Run Code Online (Sandbox Code Playgroud)

因此,我想返回具有相同值的所有键组合.即使没有相同的值,也可以将其返回到每个键的列表中:

DataID  = [(1, [3]),
           (2, [3]),
           (3, [1, 2])]
Run Code Online (Sandbox Code Playgroud)

由于我是Spark和Scala的新手,我还没有完全掌握他们的概念,因此我希望你们中的任何人都可以帮助我.即使它只是其中的一部分.

scala key list apache-spark

5
推荐指数
1
解决办法
3581
查看次数