3

我正在尝试PARTIAL_WAKE_LOCK为我的 kivy 应用程序获取一个。基本上它是一个计时器应用程序,当屏幕关闭时,计时器应该继续在后台运行。一切正常,除了唤醒锁。这就是我在python中实现它的方式:

from jnius import autoclass

PythonActivity = autoclass('org.renpy.android.PythonActivity')
activity = PythonActivity.mActivity

Context = autoclass('android.content.Context')
PowerManager = autoclass('android.os.PowerManager')

pm = activity.getSystemService(Context.POWER_SERVICE)
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 'TAG')

wl.acquire()

该应用程序运行良好,但是当屏幕关闭时它会崩溃。应用

def on_pause(self):
    return True
def on_resume(self):
    pass

方法对我没有帮助,因为它会在屏幕关闭时停止计时器。

在我的buildozer.spec文件中,我有:

android.permissions = WAKE_LOCK

当我设置:

android.wakelock = True

我只得到screen_bright_wakelock,但我需要partial_wakelock

4

1 回答 1

2

我猜你误解了WAKE_LOCK这里。默认情况下,如果您不触摸应用程序,系统会检测到手机处于空闲状态,并将其锁定。

如果用户关闭屏幕,切换到另一个应用程序等,WAKE_LOCK将不会做任何事情。因为此时,您的应用程序必须处于后台,并且处于“睡眠”模式。

你需要的是服务。当应用程序处于后台、屏幕锁定与否时,服务可以继续运行。并且您需要在您的应用程序和服务之间建立通信链接(内部 OSC 可以,请随意在互联网上搜索示例)。

或者,尝试查看 Android API 中的 AlarmManager / Alarm 是否适合您(从未测试过)。

于 2014-11-27T13:36:54.013 回答