【问题标题】:Service stops running when phone is locked手机锁定后服务停止运行
【发布时间】:2013-07-03 22:58:24
【问题描述】:

我有一个从我的应用程序的活动启动的服务。我正在使用此服务播放在线广播(如 TuneIn)

问题是,当我锁定手机时;

  • 如果我的应用程序在屏幕上(已启动且可见),服务将继续运行。
  • 如果我的应用程序停止(隐藏)或销毁,服务也会停止运行。但有时它会再次启动。

我检查了 TuneIn 的这种情况,它在每种情况下都会运行。

我怎样才能做到这一点?

编辑:

我尝试使用 WakeLock,但我的情况仍在继续:

public void onCreate() {

 ...

 pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

 wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "RadyoService WakeLock");

 wl.acquire();

 super.onCreate();
}



public void onDestroy() {

      wl.release();

      super.onDestroy();
}

并获得许可:

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

你能帮我找出我犯的错误吗?

谢谢。

【问题讨论】:

    标签: android service locked


    【解决方案1】:

    您需要维护WakeLock,以防止设备进入睡眠模式。

    【讨论】:

    • 我已经搜索过这个解决方案,但它有耗尽电池的副作用,所以我不喜欢。
    • @Taner:你表现得好像你有一个选择。你没有。
    • 我按照你的建议使用了 WakeLock。但不能让它工作。用我使用的代码编辑了我的问题。可能是什么问题?
    • @Taner:“但不能让它工作”——这不是一个特别有用的解释。我假设您的意思是您的音乐正在停止。当设备从 WiFi 切换到移动数据时,您是否正确处理了连接变化?
    • 感谢您的快速回复。你是对的。让我解释一下这个案例:当服务中的音频正在运行时,我停止/销毁了启动应用程序。然后按电源键锁定手机。就在这时,声音消失了。但过了一段时间,音乐又开始播放了。 (我认为操作系统恢复了服务)此外,如果我在启动应用程序在屏幕上时锁定了手机,以上都不存在;音频继续工作。所以我无法匹配连接状态和这种情况。
    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多