2011-06-23 37 views
2

我已經做了很少的android開發,我想知道如果任何人有關於服務的好教程。 我正在尋找一個應用程序,啓動並繼續循環,即使在後臺。Android服務教程?

回答

10

如果你做一個簡單的谷歌搜索,那麼服務上就有很多資源,所以我不打算解釋服務是如何工作的。下面的代碼片段使用了未綁定到Activity的服務。

我的方法使用了一個Timer和一個Task,注意我使用了一個重複的任務,但這不是必需的。還有其他方法可以解決這個問題。

public class MyService extends Service { 

    private Task retryTask; 
    Timer myTimer; 

    private boolean timerRunning = false; 

    private long RETRY_TIME = 200000; 
    private long START_TIME = 5000; 

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

    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
     myTimer = new Timer(); 
     myTimer.scheduleAtFixedRate(new Task(), START_TIME, RETRY_TIME); 
     timerRunning = true; 

    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     if (!timerRunning) { 
      myTimer = new Timer(); 
      myTimer.scheduleAtFixedRate(new Task(), START_TIME, RETRY_TIME); 
      timerRunning = true; 
     } 

     return super.onStartCommand(intent, flags, startId); 

    } 

    public class Task extends TimerTask { 

     @Override 
     public void run() { 

      // DO WHAT YOU NEED TO DO HERE 
     } 

    } 

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

     if (myTimer != null) { 
      myTimer.cancel(); 

     } 

     timerRunning = false; 
    } 
} 

你可以這樣使用意向

Intent intent = new Intent(WorkSelectionActivity.this,MyService.class); 
     startService(intent); 

希望這有助於

+0

正在尋找Objective-C的'NSTimer'的Java等價物,正是我所需要的! –

+0

嗨,**私人任務重試任務; **爲什麼你沒有使用這個變量 –

+0

因爲我在這裏實例化任務myTimer.scheduleAtFixedRate(新任務(),START_TIME,RETRY_TIME); – Bear

0

如果您正在尋找視頻教程然後用標籤在YouTube上搜索開始從活動服務Android開發教程。所以有四個部分。並且每個都是真棒。其中之一是Conntains服務教程。