如何使用StartForeground服务android

时间:2012-12-15 06:14:51

标签: android service

我有一个Main活动,可以使用此命令启动服务

startService(new Intent(Main.this, Myservice.class));

和Myservice类是这样的

   public class Myservice extends Service {
private ShakeListener mShaker;
String startell;
SharedPreferences prefs;

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onCreate() {
    // TODO Auto-generated method stub


    //Something

}

@Override
public void onStart(Intent intent, int startId) {
    // TODO Auto-generated method stub

    //Do Something to detecting shake
            //Show my notification


}


@Override
public void onDestroy() {
    // TODO Auto-generated method stub

    //Stop Shake detection
            //stop notification


    super.onDestroy();
}


}

我的应用程序工作正常,但大约一个小时后,服务自动停止,我的意思是在大约一个小时后,摇动检测不再起作用。 :(

我google了一下,我发现我应该使用StartForeground,但我没有找到。

现在,我应该如何在我的代码中使用StartForeground?

3 个答案:

答案 0 :(得分:1)

获取代码&释放锁定

//在onCreate()方法中获取唤醒锁定

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

wakeLock = devicePowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
        if(wakeLock != null){
            if(wakeLock.isHeld() == false){
                wakeLock.acquire();
            }
        }

//在onDestroy()方法中释放唤醒锁定

if (wakeLock != null) {
            if(wakeLock.isHeld()){
                wakeLock.release();
                wakeLock = null;
            }
}

答案 1 :(得分:0)

是的,您可以通过调用startService方法启动服务。通过这个例子,它会帮助你

Sample Project

答案 2 :(得分:0)

我认为您的服务因您的设备进入睡眠而停止工作。如果您希望它始终在后台工作,您可以使用WakeLock来防止设备睡眠,但这会显着增加电池消耗,所以要小心它。

编辑:您可以set()锁定onCreate Servicerelease() onDestroy()中的{{1}}