我的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
:
Activity
但没有成功。
答案 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())是 需要阻止它。