通过MainActivity访问后台服务

时间:2012-04-28 09:38:53

标签: android service background location

所以我有一个后台服务获取位置更新,我想从tabActivity访问该服务。 (方法是静态的)

你能告诉我如何实现这个目标吗? 如果我尝试xxxService.yyyMethod()它不起作用。

我说的是活动启动的后台服务,然后用户关闭了活动并重新启动。该服务绑定到同一个活动,并且start()(因此即使在活动关闭后它仍然存在)。通过不工作我的意思是该方法不应该返回任何东西。此外,方法调用之后的任何语句都不会执行。 - Ishwar 27秒前编辑

在活动中: 边界: *

mConnection = new ServiceConnection() {    
            public void onServiceConnected(ComponentName className, IBinder service) {
                temp="LocationService bound";

                locationService = ((LocationService.LocalBinder) service).getService();
                locationService.setProfile(Profile);
                locationService.start();
                Log.e("COnnected","");
                mBound = true;              
            }
            public void onServiceDisconnected(ComponentName arg0) {
                mBound = false;
            }
        };

*

错误区域: *

LocationService.setProfile(homeProfile); (works fine)       
LocationService.getL(); (Any statement beyond this point doesnt get executed)
Log.e("Executed","LS");                     settingsActivity.status.append(Boolean.toString(LocationService.isRunning()));

*

如果我注释掉第2行,则第3行和第4行被执行,否则它不会! P.S:如果我不放弃我的活动,一切正常。只有在我退出活动并重新启动它时才会出现此问题。

1 个答案:

答案 0 :(得分:0)

您只能从TabActivity调用活动。您需要为选项卡设置特定活动,然后从该活动访问Service的方法。所以基本上你的xxxService.yyyMethod()电话应该在活动中。