2012-12-15 42 views
2

我有一個主要活動,可以使用此命令如何使用StartForeground服務的Android

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

您的服務運行時,您是否使用'wakelock'? – Evos

+0

不,我應該如何使用它? – user1905768

回答

0

是的,你可以開始通過調用startService方法,並通過這個例子服務,它會幫助你

Sample Project

+0

我讀過這個項目,但我沒有想出如何使用它,你可以在我的代碼中顯示它嗎? – user1905768

0

我覺得你的服務停止工作,因爲你的設備要睡覺的。如果你希望它在後臺運行的所有Ť他時間你可以使用WakeLock來防止你的設備進入睡眠狀態,但這會顯着增加電池的消耗,所以要小心它。

編輯:您可以set()鎖在onCreate methond您Servicerelease()onDestroy()

+0

這是一個好方法,但我不希望我的應用程序阻止手機進入睡眠狀態,同樣,用戶可能會睡覺它是自己的手機,在這種情況下,應用程序將停止運行。 :(任何其他建議? – user1905768

+0

設備在睡眠時,您無法聽到震動,這很簡單,但有一種'WakeLock'類型,允許用戶關閉屏幕,但將設備的CPU和所有進程都啓用。所以你可以嘗試一下,但是電池消耗會更高,這是'PARTIAL_WAKE_LOCK'類型,你可以在這裏閱讀更多關於它的信息https://developer.android.com/reference/android/os/PowerManager.html#PARTIAL_WAKE_LOCK – Evos

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; 
      } 
} 
+0

請讓我知道這是否對你有幫助 – kumar

相關問題