我有后台服务GpxService
:
public class GpxService extends Service implements LocationListener {
public boolean is_recording;
...
}
我可以在MainActivity中将此服务作为后台服务启动:
gpxService = new Intent(MainActivity.this, GpxService.class);
gpxService.setAction(GpxService.START_SERVICE);
// notification, startForeground, etc. managed within gpxService onStartCommand
startService(gpxService);
如何在MainActivity中的Intent gpxService中访问标志布尔is_recording
?
背景:我有两个按钮,记录和停止。在MainActivity的onCreate
方法中,我使用setEnabled
将其中一个灰显,并使另一个可点击。我想要哪个按钮是灰色的,哪个是可点击的,取决于后台服务中的布尔标志is_recording
。
我不能在MainActivity中拥有is_recording
,因为它有时会被破坏以清除内存。在这种情况下,在后台服务仍在运行的情况下,重新打开应用程序将重置is_recording
标志,错误地触发if语句,并显示错误的按钮。
答案 0 :(得分:1)
对于像您这样的情况,您应该使用IBinder
在Service
对象和Activity
实例之间建立连接。
查看bindService来电,建立连接后,您就可以访问有效GpxService
个实例的所有公共字段和方法。
答案 1 :(得分:0)
尝试通过创建对象并访问类中的变量来解决它.... 它可能会起作用
答案 2 :(得分:0)
另一个想法:尝试将该服务作为mainActivity的子类,因为它听起来像是一种正确的方式吗