【问题标题】:Alternative to websocket within AndroidAndroid 中 websocket 的替代方案
【发布时间】:2021-03-26 15:44:16
【问题描述】:

在本地环境中,我有一些 Android 设备与前台服务中的 Web 套接字连接。 此套接字连接仅侦听消息并将它们推送到推送通知。 有时您可能数小时甚至数天都没有收到消息,因此这需要非常稳定。

当屏幕处于锁定模式时,推送通知工作,前几分钟连接正常。如果在 10-15 分钟后推送消息,则不会显示通知消息。 一旦有另一条消息出现,前一条消息就会突然被拾取并显示给。 60 分钟或更长时间后,将不会显示任何消息。连接似乎不再完整,服务器和应用程序日志也没有显示连接丢失。

我已经为此工作了超过 4 天,但令我沮丧的是,这并没有奏效。 我发现了很多与这个主题相关的主题,应用程序的优化关闭,每分钟发送一个 ping (StayAlive) 到服务器但都无济于事。

是否有其他选项可以通过前台服务与服务器建立稳定的连接?

请告诉我。

提前谢谢你。

【问题讨论】:

  • 除非您的设备不断插入电源,否则打盹模式和/或应用程序待机将限制您的网络连接。这与 websockets 与其他任何东西无关。
  • @CommonsWare 所以理​​论上不可能在 android 中创建一个供内部使用的应用程序,该应用程序连接到一个网络服务器,该服务器在后台连续检查消息。否则我必须创建自己的 ROM?
  • 这在很大程度上取决于您的设备型号和用户行为。设置中提供了“电池白名单”选项,可以尝试告诉 Android 让您的应用不理会。它们的工作情况取决于设备型号——更多信息请参见dontkillmyapp.com。并且任何用户都不需要采取这些步骤将您的应用列入白名单。

标签: android websocket foreground-service


【解决方案1】:

它是固定的。

通过在我的清单和代码中添加以下权限,应用不再打瞌睡。

<uses-permission 
android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

Java 代码:

public void turnOffDozeMode(Context context){  //you can use with or without passing context
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Intent intent = new Intent();
            String packageName = context.getPackageName();
            PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            if (pm.isIgnoringBatteryOptimizations(packageName)) // if you want to desable doze mode for this package
                intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
            else { // if you want to enable doze mode
                intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                intent.setData(Uri.parse("package:" + packageName));
            }
            context.startActivity(intent);
        }
    }

来源: how to turn off doze mode for specific apps in marshmallow devices programmatically

【讨论】:

    猜你喜欢
    • 2011-05-27
    • 2015-06-13
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多