0

我從MainActivity以及Fragment開始後臺服務。是否從MainActivity和碎片複製線程開始服務?

它會創建重複線程嗎?所以這將是2服務運行?

MainActivity

protected void onCreate(Bundle savedInstanceState) { 
    //... 
    context.startService(new Intent(context,gps_service.class)); 
//... 

片段

public class FragmentThree extends Fragment { 

//... Click method of the button calls 
getActivity().startService(new Intent(getActivity(),gps_service.class)); 
+0

可能重複的:https://stackoverflow.com/a/8019919/5154891。 –

回答

2

它會創建重複的主題?所以這將是2服務運行?

NO只有一個服務將被推出,只有一個會運行

2

只會有一個服務運行。

它會創建重複線程嗎?所以這將是2服務運行?

每次調用startService()可能有兩種可能性。

  1. 如果Service in not previously previously then it will start per life cycle。 onCreate - > onStartCamm​​and等等。

  2. 如果服務先前已啓動,則只有onStartCamm​​and()將以您傳遞給它的所需意圖被調用。

1

每個Service只存在一個實例。如果您的服務已在運行,那麼如果您嘗試重新啓動,則會調用onStartCommand(Intent, int, int)

Android Official site

注意:一種服務,它的宿主進程的主線程中運行;該服務不會創建自己的線程,也不會在單獨的進程中運行,除非您另行指定。

所以默認Service使用主線程和IntentService使用後臺線程。如果您想要執行一些長時間運行的任務,請使用IntentService或在Service中創建後臺線程。

詳細檢查this