是否可以在新线程中启动Service?

时间:2014-01-08 13:00:00

标签: android multithreading service

如果我在onCreate() MyService中使用这段代码,它会在新线程中启动还是从主线程开始?

new Thread(new Runnable() {

    @Override
    public void run() {
        startService(new Intent(this, MyService.class));
    }
});

很抱歉,如果它很明显,但我是android的初学者。我研究了很多,但没有找到任何确定的东西。谢谢

1 个答案:

答案 0 :(得分:1)

我希望它在UI线程中运行,除非你在服务中创建了一个新的线程......但你可以使服务在不同的线程或UI线程中运行,如

onCreate()

Activity内启动服务
    new Thread("myThread"){
        public void run() {
            Intent intent = new Intent(MainActivity.this, MyService.class);
            startService(intent);
        };
    }.start();

并测试服务的onCreate()中的线程名称......

public class MyService extends Service {

    @Override
    public void onCreate() {
        super.onCreate();
        String name = Thread.currentThread().getName();
        if(name.equals("myThread")) {
            // service started in new Thread...
        }
    }

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