2012-04-28 98 views
0

所以我有一個後臺服務獲取位置更新,我想從我的tabActivity訪問服務。 (該方法是靜態的)通過MainActivity訪問後臺服務

你能告訴我如何做到這一點嗎? 如果我嘗試xxxService.yyyMethod()它不起作用。

我正在討論由活動啓動的後臺服務,然後活動被用戶關閉並重新啓動。該服務綁定到相同的活動,並且還有start()(因此即使在活動關閉後它仍然存在)。通過不工作,我的意思是這個方法沒有返回任何東西,雖然它應該。此外,方法調用後的任何語句都不會執行。 - Ishwar 27秒前編輯

在活動: 邊界: *

mConnection = new ServiceConnection() {  
      public void onServiceConnected(ComponentName className, IBinder service) { 
       temp="LocationService bound"; 

       locationService = ((LocationService.LocalBinder) service).getService(); 
       locationService.setProfile(Profile); 
       locationService.start(); 
       Log.e("COnnected",""); 
       mBound = true;    
      } 
      public void onServiceDisconnected(ComponentName arg0) { 
       mBound = false; 
      } 
     }; 

*

錯誤面積: *

LocationService.setProfile(homeProfile); (works fine)  
LocationService.getL(); (Any statement beyond this point doesnt get executed) 
Log.e("Executed","LS");      settingsActivity.status.append(Boolean.toString(LocationService.isRunning())); 

*

如果我評論了第二李ne,第三和第四行被執行,否則它不會! P.S:如果我不放棄我的活動,一切正常。如果我退出我的活動並重新啓動它,問題纔會發生。

+0

「它不工作......?」..解釋更多..發生了什麼? – 5hssba 2012-04-28 09:42:15

+0

我正在討論由活動啓動的後臺服務,然後活動被用戶關閉並重新啓動。該服務綁定到相同的活動,並且還有start()(因此即使在活動關閉後它仍然存在)。 通過不工作我的意思是該方法不會返回任何東西雖然它應該。此外,方法調用後的任何語句都不會執行。 – Ishwar 2012-04-28 09:52:11

+0

更新了問題的更多信息 – Ishwar 2012-04-28 10:00:54

回答

0

您只能致電TabActivity的活動。您需要爲選項卡設置特定的活動,然後從該活動訪問Service的方法。所以基本上你的xxxService.yyyMethod()電話應該在活動中。

+0

這就是我正在做的!我沒有收到編譯錯誤或任何東西,但我的應用程序只是沒有返回yyyMethod應該的值!實際上,它只是停止執行.. – Ishwar 2012-04-28 09:44:44

+0

我正在討論由活動啓動的後臺服務,然後活動被用戶關閉,重新啓動。該服務被綁定,並且還啓動()(因此即使在活動關閉後它仍然存在)。 – Ishwar 2012-04-28 09:46:06

+0

你可以給一些代碼或堆棧跟蹤? – 2012-04-28 09:46:24