如何从intent(后台服务)引用布尔变量?

时间:2017-04-16 15:05:01

标签: java android android-intent

我有后台服务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语句,并显示错误的按钮。

3 个答案:

答案 0 :(得分:1)

对于像您这样的情况,您应该使用IBinderService对象和Activity实例之间建立连接。

查看bindService来电,建立连接后,您就可以访问有效GpxService个实例的所有公共字段和方法。

答案 1 :(得分:0)

尝试通过创建对象并访问类中的变量来解决它.... 它可能会起作用

答案 2 :(得分:0)

另一个想法:尝试将该服务作为mainActivity的子类,因为它听起来像是一种正确的方式吗