在哪里启动线程?

问题描述 投票:1回答:1

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

android multithreading performance service
1个回答
1
投票

使用此

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.