2012-06-12 119 views
0

我是Android服務新手,因此我有一些問題可以闡明我如何在當前項目中使用它們。Android服務基礎知識

1)我是否需要運行我的應用程序才能運行該服務?我必須啓動服務啓動應用程序嗎?

2)我想在服務運行結束時在屏幕上打印文本。首先,是否有可能,第二,當我切換到活動屏幕時,是否可以在活動用戶界面上看到此文本?

3)我希望我的服務使用在主Activity類中實現的變量和函數。可能嗎?

4)與問題3相關:我在當前應用程序中使用TimerTask重複每分鐘的AsyncTask。我想擁有相同的功能,但是這次在用戶忙於做其他事情時在後臺運行。服務是否正確嗎?我可以通過從服務運行我的searchRegularly()(它在Activity中)函數來實現這一點嗎?下面,backgroundSearch是每分鐘運行的AsyncTask的名稱。

public void searchRegularly() { 

    TimerTask doAsynchronousTask; 
    final Handler handler = new Handler(); 
    searchTimer = new Timer(); 
    doAsynchronousTask = new TimerTask() { 
     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      handler.post(new Runnable() { 
       public void run() { 

         backgroundSearch = new SearchTask(); 
         backgroundSearch.execute(); 
       } 
      }); 

     } 

    }; 

    searchTimer.schedule(doAsynchronousTask, 1000,60000); 

} 

5)您如何決定使用服務還是IntentService?主要區別是什麼?

回答

2

1)號但是,應用程序(我的意思是在清單中的應用程序類,不活動)會在服務

2)之前,你的意思是「toast」創造出來的?是的

3)雖然它可能與一些技巧,這是不推薦。重新思考你的設計。

4)服務可以做,還是可以考慮AlaramManager

5)服務本身應該是一個Singleton,同一類的沒有兩個服務將在同一時間運行;對於服務,如果您調用多個StartService,並且服務已在運行,則它不會啓動兩次。但IntentService可以同時處理多個「開始」。