Java 如果每次使用不同的意图对象启动服务,会发生什么
堆栈溢出中有一个问题,它解决了如果创建一个新的intent对象并使用它多次调用同一服务时会发生什么情况。假设我们有一个媒体播放器的服务类Java 如果每次使用不同的意图对象启动服务,会发生什么,java,android,android-intent,service,android-mediaplayer,Java,Android,Android Intent,Service,Android Mediaplayer,堆栈溢出中有一个问题,它解决了如果创建一个新的intent对象并使用它多次调用同一服务时会发生什么情况。假设我们有一个媒体播放器的服务类 public class MyService extends Service { private MediaPlayer mp; @Override public void onCreate() { super.onCreate(); mp = new MediaPlayer();
public class MyService extends Service
{
private MediaPlayer mp;
@Override
public void onCreate()
{
super.onCreate();
mp = new MediaPlayer();
....
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
.....
return START_STICKY;
}
.....
}
所以如果我们要这么做
Intent i = new Intent(this, MyService.class);
startService(i);
它第一次调用onCreate方法,实例化Media Player对象,然后调用onStart命令方法
如果我们那时打电话
startService(i);
同样,它只需调用onStartCommand方法,而不是onCreate方法
问题:
但如果我们这样做了呢
Intent i2 = new Intent(this, MyService.class);
startService(i2);
然后它会调用onCreate方法,创建第二个MediaPlayer对象,其中现在有两个Media Player对象,然后调用onStartCommand方法,还是会意识到我们之前已经启动了服务,并且只调用onStartCommand
然后它会调用onCreate方法,创建第二个MediaPlayer对象,其中现在有两个MediaPlayer对象,然后调用onStartCommand方法吗
没有
它会意识到我们之前已经启动了服务,并且只调用onstart命令吗
对
Intent
对象是数据的载体。Intent
对象本身的实例没有意义。i
和i2
都解析为MyService
,最多会有一个MyService
的运行实例
然后它会调用onCreate方法,创建第二个MediaPlayer对象,其中现在有两个MediaPlayer对象,然后调用onStartCommand方法吗
没有
它会意识到我们之前已经启动了服务,并且只调用onstart命令吗
对
Intent
对象是数据的载体。Intent
对象本身的实例没有意义。i
和i2
都解析为MyService
,最多会有一个MyService
的运行实例,它将调用onCreate方法,创建第二个MediaPlayer对象,其中现在有两个Media Player对象,然后调用onStart命令方法。它将调用onCreate方法,创建第二个Media Player对象,其中现在有两个Media Player对象,然后调用onStart命令方法。问题:
然后它会调用onCreate方法,创建第二个MediaPlayer对象,其中现在有两个MediaPlayer对象,然后调用onStart命令方法吗?
不会的
Becoz服务在android中是单一实例,无论您启动它的目的是什么,只要您启动相同的服务,它总是会启动一次
然后它会调用onCreate方法,创建第二个MediaPlayer对象,其中现在有两个MediaPlayer对象,然后调用onStart命令方法吗?
不会的
Becoz服务在android中是单一实例,无论您启动它的目的是什么,只要您启动相同的服务,它总是只启动一次