首页 > 解决方案 > 从哪里开始服务中的线程?

问题描述

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

标签: androidmultithreadingperformanceservice

解决方案


用这个

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;
    }
}

推荐阅读