Java 如何在android中创建一个服务线程或仅仅是一个服务,直到服务被明确停止为止?

Java 如何在android中创建一个服务线程或仅仅是一个服务,直到服务被明确停止为止?,java,android,multithreading,android-service,Java,Android,Multithreading,Android Service,我想要一个服务,看看是否连接了耳机。如果它们是连接的,那么在它们断开连接时做些什么&做些其他的事情。我希望服务或线程一直运行,直到通过按其活动上的停止按钮显式停止为止 这是我的onStartCommand()code&我要运行的代码位于函数theRun()中 如果我在那里插入代码,该服务将只在onStartCommand()上执行一次。但是如何运行服务或线程,直到它被活动显式停止?请指导我。在onStartCommand方法中返回启动 试试这个 @Override public int onS

我想要一个服务,看看是否连接了耳机。如果它们是连接的,那么在它们断开连接时做些什么&做些其他的事情。我希望服务或线程一直运行,直到通过按其活动上的停止按钮显式停止为止

这是我的
onStartCommand()
code&我要运行的代码位于函数
theRun()


如果我在那里插入代码,该服务将只在
onStartCommand()
上执行一次。但是如何运行服务或线程,直到它被活动显式停止?请指导我。

onStartCommand方法中返回启动

试试这个

 @Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i("LocalService", "Received start id " + startId + ": " + intent);
    theRun tR= new theRun();
    tR.start();
    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
}

请参阅

注意,这实际上并不意味着它将继续运行;相反,这意味着如果它过早停止,可能会尝试重新启动它。对于永久运行第三方服务没有真正的支持。从体系结构上讲,这最好是通过运行对事件的响应来实现,而不是试图保持休眠(/polling?)服务进程。我编辑了上面的帖子,你能告诉我if语句返回什么吗?当我只关心耳机是否连接时,我如何应对事件?我怀疑它是否有用-你似乎在比较两个静态值。试着比较一下你的意图……这会有帮助吗<代码>意向耳机\标志=新意向(意向.行动\耳机\插头)
Headset_Flag.hasExtra(“状态”)@Chris Stratton
 @Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i("LocalService", "Received start id " + startId + ": " + intent);
    theRun tR= new theRun();
    tR.start();
    // We want this service to continue running until it is explicitly
    // stopped, so return sticky.
    return START_STICKY;
}