RT
服务如果不另开线程,是运行在UI线程里的
但是用RECEIVE_BOOT_COMPLETELY,然后在onReceive里通过startService开机自动启动的服务是运行在哪个线程里的?官网说了一大堆,什么onReceive在执行完后线程就会被Kill,什么建议用JobScheme。但是我服务启动后也没被Kill,用的好好的…

解决方案 »

  1.   

    运行在UI主线程
    和你在调用startService没有关系
      

  2.   

    和你在哪调用startService没有关系
      

  3.   

    可以借助于 Looper,判断当前线程到底是主线程, 还是子线程
    代码如下:
    public boolean isMainThread() {
        return Looper.getMainLooper() == Looper.myLooper();
    }
    或者
    public boolean isMainThread() {
        return Looper.getMainLooper().getThread() == Thread.currentThread();
    }或者
    public boolean isMainThread() {
        return Looper.getMainLooper().getThread().getId() == Thread.currentThread().getId();
    }