保持我的应用程序活着 - Android

时间:2012-02-12 08:53:31

标签: android

我正在尝试在Android 2.2上创建一个必须运行的应用程序,无论屏幕是打开还是关闭。

我尝试通过服务实现它,但是当我的手机关闭屏幕时,服务停止工作,我不明白为什么。

在我的应用程序中,我使用

startService(new Intent(this, MyService.class));

当用户按下按钮时

Notification notification = new Notification();
startForeground(1, notification);

在服务类的onCreate-Method

(我也在onStart()方法中尝试过它)

(我也无法找出startForeground()所期望的id-field所以我使用了1)

然后服务应该启动手机的无限振动模式,以便我知道它是否正在运行。 但是当我关闭屏幕时,手机会立即停止振动

请帮帮我。我不知道如何解决这个问题(谷歌不是一个很大的帮助)

此致 ZED

3 个答案:

答案 0 :(得分:1)

Android设备在空闲时(例如,当屏幕关闭时)进入睡眠模式,以节省电池电量。

要保持服务正常运行,您需要获取WakeLock。有很多教程如何使用它,比如this one

请注意,让服务一直运行会耗尽电池电量。还要确保在不需要时释放唤醒锁,否则你的手机总是会醒着。

答案 1 :(得分:0)

尝试从'onStartCommand()'返回'START_STICKY'。这将使服务保持运行,必要时重新启动它,而不保持屏幕打开。

查看http://developer.android.com/reference/android/app/Service.html#START_STICKY

答案 2 :(得分:0)

试试这个

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
    final KeyguardManager.KeyguardLock kl = km .newKeyguardLock("MyKeyguardLock"); 
    kl.disableKeyguard(); 

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                                     | PowerManager.ACQUIRE_CAUSES_WAKEUP
                                     | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
    wakeLock.acquire();

并在清单文件中

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

所以当你的通知或警报管理器服务运行时,屏幕会亮起,键盘锁将会解锁。我希望它能解决谁也遇到这个问题。