如何引用使用Intent / startService创建的对象

时间:2011-06-30 05:35:29

标签: android android-service

如果我在我的应用onCreate中创建服务,请执行以下操作:

Intent srv = new Intent( this, MyService.class );
startService( srv );

如何获取对服务对象的引用以及服务对象如何引用启动它的应用程序?

(是的,我在AndroidManifest中列出了该服务)。

2 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题。您可以绑定到将使用IBinder接口回叫的服务(bindService)。

另一种方法是继续使用不同的意图数据调用startService()作为向服务发送消息的方式,并使用包含消息细节的意图额外数据。

最后,如果您知道该服务在同一个进程中,则可以在某个静态内存中共享该服务实例。

答案 1 :(得分:0)

建立服务

首先,我们需要在AndroidManifest.xml文件中创建服务。请记住,您在代码中创建的每个Activity,Service,Content Provider都需要在此处创建引用,如果没有,则应用程序将无法识别它。

<service android:name=".subpackagename.ServiceName"/>

在代码中,我们需要创建一个从“Service”

扩展的类
public class ServiceName extends Service {

    private Timer timer = new Timer();

    protected void onCreate() {

        super.onCreate();

        startservice();

    }

}

这是一种创建服务的方法,还有其他方式,或者我使用它们的方式。在这里,我们创建一个Timer,每X秒调用一个方法。这一直在运行,直到我们停止它。例如,这可用于检查RSS提要中的更新。 “Timer”类用于启动服务方法,如

private void startservice() {

    timer.scheduleAtFixedRate( new TimerTask() {

    public void run() {

        //Do whatever you want to do every “INTERVAL”

    }

    }, 0, INTERVAL);

; }

每当执行run方法时,INTERVAL就是时间。

要停止服务,我们可以停止计时器,例如,当应用程序被销毁时(在onDestroy()中)

private void stopservice() {

    if (timer != null){

    timer.cancel();

    }

}

所以,这个应用程序将在后台运行......