【问题标题】:service killed when app cloes just in huawei device当应用程序仅在华为设备中关闭时服务被终止
【发布时间】:2019-05-23 16:59:11
【问题描述】:

我总是为 Toast 提供服务,但只是在我杀死应用程序时被杀死的华为设备服务中。
不知道为什么?

我的服务是:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    onTaskRemoved(intent);
    new CountDownTimer(99999999L,5000 ) {
        @Override
        public void onTick(long arg0) {
                Toast.makeText(getApplicationContext(), "hihihi", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFinish() {
        }
    }.start();
    return START_STICKY;
}

@Override
public IBinder onBind(Intent intent) {
    // TODO: Return the communication channel to the service.
    throw new UnsupportedOperationException("Not yet implemented");
} 

【问题讨论】:

    标签: android android-service


    【解决方案1】:

    一个老问题,但我认为重要的是要知道华为有一个名为“功耗密集型应用程序监视器”的功能。

    它会杀死所有在后台运行很长时间的应用程序,除非用户授予它特殊权限。

    执行此操作的路径: 设置->安全和隐私->位置服务->最近的位置请求:您的应用程序名称->电池->取消选中耗电提示,应用程序启动:手动管理:检查所有三个位置:自动启动,二次启动,运行背景。

    我不知道是否有办法以编程方式执行此操作。我认为最好的方法是创建一种帮助活动,并向用户说明如果应用程序无法运行该怎么办。

    【讨论】:

      【解决方案2】:

      你应该在 @Override onDestroy() 方法上停止服务

      【讨论】:

      • 我不想停止服务。我想要永远的服务连续性。
      • 您的应用正在您的活动中执行 Toast,因此当您关闭活动时,您不能继续调用 Toast,否则您的活动会崩溃
      • App无法在华为设备上一直调用Toast。我在三星设备上测试过,一切正常。
      • 这是因为在华为和小米你不能让应用程序在后台监听事件中打开,如果你想模仿三星你应该阻止应用程序并且不要让它被关闭 [这里你有扩展解释]docs.telerik.com/platform/knowledge-base/troubleshooting/…
      • 此服务想要检查用户启动应用程序并在应用程序未运行时发送通知。此服务应在所有设备中运行。但是这个设备杀死了服务,我不知道。
      猜你喜欢
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 2020-03-23
      • 1970-01-01
      相关资源
      最近更新 更多