2013-05-18 74 views
0

我想運行一個服務,當我停止我的應用程序,該服務仍然運行意味着它繼續其任務。停止我們的應用程序時停止服務的方式是什麼?請幫助我如何停止此服務。還有一件事也有如果我使用意圖在這個類從那裏服務叫我搬回但是當我按下返回鍵在模擬器回去那麼它也顯示服務畫面搬回那類。服務正在運行後,應用程序停止

我顯示服務類的代碼

public class SetMovableBG_Inbuilt_SetImage extends Service 
{ 
    Timer mytimer; 
    int interval = 2000; 
    int interval1 = 4000; 
    Drawable drawable; 
    WallpaperManager wpm; 
    int prev = 0; 
    int numImage; 
    private ArrayList<Integer> imgId; 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
     mytimer = new Timer(); 
     wpm = WallpaperManager.getInstance(this); 
    } 

    // here i am geting intent from the class from where i am calling this class. 
    //everything works fine but service not stops even after stop the app 
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) 
    { 
     imgId = intent.getIntegerArrayListExtra("ImgId"); 
     numImage = imgId.size(); 
     mytimer.schedule(new TimerTask() 
     { 
      @Override 
      public void run() 
      { 
       // TODO Auto-generated method stub 
       if (prev >= numImage) 
       { 
        prev = 0; 
       } 
       try 
       { 
        wpm.setResource(imgId.get(prev)); 
       } 
       catch (IOException e) 
       { 
        e.printStackTrace(); 
       } 
       prev++; 
      } 
     }, interval, interval1); 
     return super.onStartCommand(intent, flags, startId); 
    } 

    @Override 
    public IBinder onBind(Intent arg0) 
    { 
     return null; 
    } 
} 
+0

,您在活動開始的服務? – stinepike

+0

Plz幫助我我是新來的android – user2368731

+0

看到我的答案..在編碼服務之前閱讀並理解我提供的鏈接 – stinepike

回答

2

可以使用Service.stopService方法來阻止類似活動的其他組件的服務。您可以使用Service.stopSelf方法停止從服務本身的服務。根據文檔

啓動的服務必須管理其自己的生命週期。也就是說,系統 不會停止或銷燬服務,除非它必須恢復系統 內存,並且服務在onStartCommand() 返回後繼續運行。因此,該服務必須通過調用stopSelf()或 停止本身的另一個組件可以通過調用stopService停止它()。

爲了更多地瞭解服務見here

+0

然後我應該寫Service.stopService在活動類中調用服務類或僅在服務類中&其中方法應該在我寫這篇 – user2368731

+0

如果你正在使用startservice(意向),然後停止使用stopService(意圖)的服務開始服務。使用相同的意圖,以停止服務 – stinepike

+0

我試圖通過編寫stopService()下面啓動服務,但是當我在模擬器中運行和檢查運行的應用程序,它不顯示我我的ruuning應用程序。 – user2368731

相關問題