如何更新服务内部的变量并根据状态执行



我正在学习Java和Android开发。现在我正在制作一个应用程序,一旦启动将创建一个服务。然后我希望服务根据我在应用程序中按下的按钮来做事情。

这是我的服务班。

public class ServiceClass extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
// Issue is here. I cannot use findViewById
Button start_stop_button = (Button) findViewById(R.id.button2);
start_stop_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}

@Override
public void onDestroy() {
super.onDestroy();
// stop the wifi manager
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}

我的想法是我可以设置一个监听器,所以当我按下按钮的onClick()将执行。但这是行不通的,因为该服务没有附加到任何活动来知道id "button1"是。

所以我想保留一个类变量,只是更新它。这些看起来相当简单,但我不确定如何让服务检查变量的状态是否发生了变化。我可以把它放在for循环中继续检查,但我觉得有更好的方法。

tldr;我有一个启动服务的应用程序。我希望我的应用程序能够关闭,服务仍然运行。但是我想在我的应用程序中有一个启动/停止按钮来触发服务。

您不需要这样的按钮来显式停止服务,因为当onStartCommand内部的作业完成时,它会自动停止

如果你想手动控制你的Activity里面的服务,你的按钮实际上是那么你可以使用stopServicestartService方法

你可以在这里找到详细的解释

Service应该是无UI的,所以你不能在Service中做一些与UI相关的事情,这不是Service的本意。你可以弹出一个通知然后点击你可以开始你的活动如果你想做这样的事情你可以访问按钮

最新更新