Does start of a Service from MainActivity and fragment duplication threads?

时间:2017-12-18 08:24:57

标签: java android multithreading android-fragments android-service

I start a background service from public int convert2(byte b1, byte b2) { return new BigInteger(new byte[]{b2,b1}).intValue(); } and as well as from MainActivity.

Will it create duplicate threads? So It will be 2 services running?

MainActivity

Fragment

Fragment

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

3 个答案:

答案 0 :(得分:2)

Will it create duplicate threads? So It will be 2 services running?

NO only one service will be launched and only one will running

答案 1 :(得分:2)

只会运行一项服务。

  

它会创建重复的线程吗?那么它将运行2个服务吗?

每次调用startService()时都有两种可能性。

  1. 如果之前未启动Service,则它将按其生命周期启动。 onCreate - > onStartCamm​​and 等等。

  2. 如果以前启动了服务,则只会通过 onStartCamm​​and()调用您已传递给它的所需意图。

答案 2 :(得分:1)

每个Service只存在一个实例。如果您的服务已在运行,那么如果您尝试重新启动,则会调用onStartCommand(Intent, int, int)

来自Android Official site

  

警告:服务在其托管进程的主线程中运行;除非另外指定,否则该服务不会创建自己的线程,也不会在单独的进程中运行。

因此默认情况下Service使用主线程,IntentService使用后台线程。如果您想执行一些长时间运行的任务,请使用IntentService或在Service中创建后台线程。

有关详情this