两部手机上startService的不同行为

时间:2018-10-17 06:11:48

标签: android service apk

在我的手机上,我有一个经过自我开发和测试的应用程序,该应用程序已发布(来自Play商店)并具有调试版本。所有的一切都很好。这个版本是在一个月前安装的。

现在,我想进行更改,并且第一步,我在不进行功能更改的情况下编译原始代码,只需增加版本号,以查看是否每个版本都能像以前那样正常工作。我将apk安装在同一部手机上,并想知道因为启动行为不符合预期,所以挂起了。经过一段时间的调试后,我发现该服务的启动出错了。

        Intent _ServiceIntend = new Intent(this, SportService.class);
        ComponentName CN = this.startService(_ServiceIntend);
        if( CN != null)
        {
            Toast.makeText( this, "StartService OK", Toast.LENGTH_LONG ).show();
        }
        else
        {
            Toast.makeText( this, "StartService NOK !!!!", Toast.LENGTH_LONG ).show();
        }

在这种情况下,我将多余的If-else语句与祝酒词一起放入其中,以查看会发生什么。 startService返回null(无异常),并且不会调用相关服务的onStartCommand。在android studio模拟器中运行代码工作正常,从startService返回实例。备注:手机上使用相同代码的最新发行版仍然可以正常工作。

我花了数小时和大量的神经,当我拿起另一部手机并将相同的apk文件放到它上之后,安装它,它立刻可以正常工作。

第一个手机具有android 6.0,第二个手机具有android 8.0。为了进行最终测试,以确保sdk定义没有任何问题(我将其设置为16到24),我将相同的sdk放在了装有android 4.1.2的旧版手机上,并且也可以正常工作。 >

所以代码还可以。是否有人知道什么会导致这些后果并导致无法启动服务?

  • 限制?
  • 内存?
  • 好运?
  • 移动生产商实施的内容有所不同
  • 还有什么?

恐怕下一版本将无法在所有设备上正常运行。 感谢您的任何想法或提示。

0 个答案:

没有答案