触发多项服务

时间:2012-05-27 05:49:04

标签: android android-intent android-service

我有两个与Android服务有关的问题。

首先,我想知道哪个计算成本较低?线程或服务?

其次,在我的主要Android应用程序中,我试图触发2个服务:

Intent intent = new Intent("android.intent.action.MAIN");
    intent.setComponent(ComponentName
            .unflattenFromString("com.mrlite.service1"));
    intent.addCategory("android.intent.category.LAUNCHER");
    startService(intent);

    intent.setComponent(ComponentName
            .unflattenFromString("com.mrlite.service2"));
    intent.addCategory("android.intent.category.LAUNCHER");
    startService(intent);

服务1:

package com.mrlite.service1;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class Service1Activity extends Service {

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

    @Override
    public void onCreate() {
        super.onCreate();

        //Intent intent = new Intent("android.intent.action.MAIN");
        //String value = getIntent().getExtras().getString("1")

        Log.e(getClass().getSimpleName(), "Service 1 Started");
    }

    @Override
    public void onDestroy()
    {
      super.onDestroy();
      Log.e(getClass().getSimpleName(), "Service 1 Destroyed");
    }
}

服务2:

package com.mrlite.service2;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class Service2Activity extends Service {

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

    @Override
    public void onCreate() {
        super.onCreate();

        // Intent intent = new Intent("android.intent.action.MAIN");
        // String value = getIntent().getExtras().getString("1")

        Log.e("Service 2", "Service 2 Started");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.e("Service 2", "Service 2 Destroyed");
    }
}

每当我尝试执行此代码时,只会调用服务1。永远不会调用服务2。

如何同时触发2项服务?

1 个答案:

答案 0 :(得分:1)

你有没有理由以这种方式开始服务?为什么不这样做:

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

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

它可能无法按照您的方式运作的原因是因为android.intent.action.MAIN只能分配给一个类。