我有一个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?
答案 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
方法启动服务。通过这个例子,它会帮助你
答案 2 :(得分:0)
我认为您的服务因您的设备进入睡眠而停止工作。如果您希望它始终在后台工作,您可以使用WakeLock来防止设备睡眠,但这会显着增加电池消耗,所以要小心它。
编辑:您可以set()
锁定onCreate
Service
和release()
onDestroy()
中的{{1}}