如何处理循环服务?

时间:2015-04-28 12:00:35

标签: android service

我的Android应用程序正在激活调用service的{​​{1}}。 在mainActivity上:

'Activity

然后服务:

 startService(new Intent(getBaseContext(),MyService.class)); 

在trackingActivity结束时,这一行被写入(再次):

     public int onStartCommand(Intent intent,int flage,int startId){

//  Toast.makeText(this, "Yes please", Toast.LENGTH_LONG).show();

    Intent mIntent=new Intent(MyService.this,trackingActivity.class);
    mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(mIntent);

    return START_STICKY; }

这会产生很多startService(new Intent(getBaseContext(),MyService.class)); 。有没有更好的方法来创建一个重复自己的后台服务,而不是每次都创建一个新的Services

我尝试在Service

中执行while循环
Activity

但没有成功。

1 个答案:

答案 0 :(得分:1)

Context.startService(Intent)不会为每次通话创建新的Service

如果已经有匹配的服务在运行,它会将意图传递给正在运行的服务,但不会每次都创建一个新服务。

请参阅适用于Context.startService(Intent)的Android开发人员文档:

  

如果此服务尚未运行,则将对其进行实例化   开始(如果需要,为它创建一个过程);如果它正在运行那么   它仍然在运行。

     

对此方法的每次调用都将导致对目标服务的onStartCommand(Intent,int,int)方法的相应调用,其意图在此处给出。

Android Developer Docs中有类似的信息Starting a Service

  

[使用intent启动服务时] startService()方法立即返回Android系统   调用服务的onStartCommand()方法。如果服务不是   已经运行,系统首先调用onCreate(),然后调用   onStartCommand()。

     

...

     

启动服务的多个请求导致多个   对服务onStartCommand()的相应调用。但是,只有   一个停止服务的请求(使用stopSelf()或stopService())是   需要阻止它。