使用标签时Android位置服务中断

时间:2011-03-30 02:02:12

标签: android

我正在构建一个使用gps定位用户的android应用程序。我有一个名为LocationService的类,它扩展了Service并实现了LocationListener。在我的活动中,我有以下代码。当我想打开服务并侦听位置时,我调用了startLocationService()方法。这一切都很好。

然后我将此活动放在tabhost的选项卡中。现在当我调用startLocationService()时,没有任何反应,甚至没有调用LocationService中的onCreate()方法。我检查了行中的“this”引用 Intent i = new Intent(this,LocationService.class); 它指的是正确的活动,而不是TabActivity。

我无法解释为什么没有启动LocationService。我很感激任何人都可以解决这个问题。

感谢, 保罗

private LocationService service = null;
private ServiceConnection svcConn = new ServiceConnection() {
    public void onServiceConnected(ComponentName className, IBinder binder) {
        service = (LocationService)binder;
        try {
            service.registerCallback(cbListener);
            service.enableProximityPoints();

        } catch (Throwable t) {
            Log.e("MyPath", "Exception in call to registerAccount()", t);
        }
    }
    public void onServiceDisconnected(ComponentName className) {
        service = null;
    }
};



private void startLocationService(){
    Intent i = new Intent(this, LocationService.class);
    bindService(i, svcConn, 0);
    startService(i);
}

2 个答案:

答案 0 :(得分:1)

看起来其他人遇到了类似的问题:http://www.mail-archive.com/android-beginners@googlegroups.com/msg08047.html

他们通过将服务连接移动到TabActivity类来解决他们的问题。

答案 1 :(得分:0)

  

我检查了“this”中的参考   line Intent i = new Intent(this,   LocationService.class);它指的是   正确的活动,而不是   TabActivity。

这可能是问题所在 - 我发现活动的标签内容与我有时的预期略有不同。

在作为“标签内容”活动的活动中,尝试定义类实例成员...

private Context parent = null;

然后在onCreate() ...

parent = this.getParent(); // Gets the TabActivity context

然后在startLocationService()中使用...

Intent i = new Intent(parent, LocationService.class);

不确定它是否有用但值得一试。我目前正在开发一个基于TabActivity的应用程序,我不得不在“标签内容”活动中的各个地方做这样的事情,以使事情正常工作。