Java 无法在Android 6上启动服务

Java 无法在Android 6上启动服务,java,android,android-intent,android-6.0-marshmallow,Java,Android,Android Intent,Android 6.0 Marshmallow,我的问题出现在android棉花糖上,若apk文件是调试的,那个么一切都正常,但在发布模式下无法启动服务,不会崩溃,只是进入睡眠状态。代码很简单 Intent Intent=newintent(MyActivity.this,WorkService.class); startService(意向),也尝试过 Thread t = new Thread(){ public void run(){ if (null == WorkService.workThr

我的问题出现在android棉花糖上,若apk文件是调试的,那个么一切都正常,但在发布模式下无法启动服务,不会崩溃,只是进入睡眠状态。代码很简单
Intent Intent=newintent(MyActivity.this,WorkService.class);
startService(意向),也尝试过

Thread t = new Thread(){
        public void run(){
            if (null == WorkService.workThread) {
                Intent intent = new Intent(MyActivity.this, WorkService.class);
                startService(intent);
            }
        }
    };
    t.start();
结果相同,工作服务:

public class WorkService extends Service {

public static WorkThread workThread = null;
private static Handler mHandler = null;
private static List<Handler> targetsHandler = new ArrayList<>(5);

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

@Override
public void onCreate() {
    mHandler = new MHandler(this);
    workThread = new WorkThread(mHandler);
    workThread.start();
    Log.v("DrawerService", "onCreate");
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.v("DrawerService", "onStartCommand");
    Message msg = Message.obtain();
    msg.what = Global.MSG_ALLTHREAD_READY;
    notifyHandlers(msg);
    return START_NOT_STICKY;
}

@Override
public void onDestroy() {
    workThread.disconnectBt();
    workThread.disconnectNet();
    workThread.disconnectUsb();
    workThread.quit();
    workThread = null;
    Log.v("DrawerService", "onDestroy");
}

static class MHandler extends Handler {

    WeakReference<WorkService> mService;

    MHandler(WorkService service) {
        mService = new WeakReference<>(service);
    }

    @Override
    public void handleMessage(Message msg) {
        notifyHandlers(msg);
    }
}

/**
 * 
 * @param handler
 */
public static void addHandler(Handler handler) {
    if (!targetsHandler.contains(handler)) {
        targetsHandler.add(handler);
    }
}

/**
 * 
 * @param handler
 */
public static void delHandler(Handler handler) {
    if (targetsHandler.contains(handler)) {
        targetsHandler.remove(handler);
    }
}

/**
 * 
 * @param msg
 */
public static void notifyHandlers(Message msg) {
    for (int i = 0; i < targetsHandler.size(); i++) {
        Message message = Message.obtain(msg);
        targetsHandler.get(i).sendMessage(message);
    }
}
公共类工作服务扩展服务{
公共静态工作线程WorkThread=null;
私有静态处理程序mHandler=null;
私有静态列表targetsHandler=newArrayList(5);
@凌驾
公共IBinder onBind(意图arg0){
//TODO自动生成的方法存根
返回null;
}
@凌驾
public void onCreate(){
mHandler=新mHandler(本);
工作线程=新工作线程(mHandler);
workThread.start();
Log.v(“抽屉服务”、“onCreate”);
}
@凌驾
公共int onStartCommand(Intent Intent、int标志、int startId){
Log.v(“抽屉服务”、“启动命令”);
Message msg=Message.get();
msg.what=Global.msg\u ALLTHREAD\u READY;
通知处理程序(msg);
返回开始时间不粘;
}
@凌驾
公共空间{
workThread.disconnectBt();
workThread.disconnectNet();
workThread.disconnectUsb();
workThread.quit();
workThread=null;
Log.v(“付款人服务”、“onDestroy”);
}
静态类MHandler扩展了处理程序{
WeakReference mService;
MHandler(工作服务){
mService=新的WeakReference(服务);
}
@凌驾
公共无效handleMessage(消息消息消息){
通知处理程序(msg);
}
}
/**
* 
*@param处理程序
*/
公共静态void addHandler(处理程序处理程序){
如果(!targetsHandler.contains(handler)){
targetsHandler.add(处理程序);
}
}
/**
* 
*@param处理程序
*/
公共静态void delHandler(处理程序){
if(targetsHandler.contains(handler)){
targetsHandler.remove(处理程序);
}
}
/**
* 
*@param msg
*/
公共静态void notifyHandler(消息消息消息){
对于(int i=0;i
}


有人能帮我吗?

更详细地说明正在发生的事情。告诉我们你的应用程序的两次运行之间到底有什么不同。在api级别<23时,工作服务启动并工作,在api级别23时,在线startService手机挂起,几秒钟后提供关闭的应用程序或等待更多。为什么你在另一个线程中调用
startService()
调用?即使我从UI调用,错误也是一样的