在哪里启动线程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在哪里启动线程?相关的知识,希望对你有一定的参考价值。

根据android文档,应使用service执行长时间运行的任务,并且service应该在单独的线程中。我有以下问题吗?注意:我使用的是普通服务而非意图服务。1默认情况下,服务运行在主线程中,我需要在其中创建线程以执行长时间运行的任务onCreate,onStartCommand吗?2在绑定服务的情况下,我需要创建线程来执行长时间运行的任务onCreate,onBind?

答案

使用此

public class NetworkService extends Service 

    private HandlerThread mHandlerThread;
    private Handler mHandler;
    private final IBinder mBinder = new MyLocalBinder();

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

        mHandlerThread = new HandlerThread("LocalServiceThread");
        mHandlerThread.start();

        mHandler = new Handler(mHandlerThread.getLooper());
    

    public void postRunnable(Runnable runnable) 
        mHandler.post(runnable);
    

    public class MyLocalBinder extends Binder 
        public NetworkService getService() 
            return NetworkService.this;
        
    

    @Override
    public IBinder onBind(Intent intent) 
        return mBinder;
    

以上是关于在哪里启动线程?的主要内容,如果未能解决你的问题,请参考以下文章

在哪里捕获 Callable.call() 引发的异常 [重复]

oracleDBConsoleorcl服务 在哪里启动

怎么启动JAVA里的JVM?

如何启动JAVA里的JVM?

我们应该在线程类中的哪里编写原始线程函数

来自线程的方法调用在哪里运行?