【发布时间】:2016-06-27 17:12:59
【问题描述】:
堆栈溢出中存在一个问题,该问题解决了如果您创建一个新的意图对象并使用它多次调用同一个服务会发生什么。假设我们有这个用于媒体播放器的服务类。
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 方法,实例化我们的媒体播放器对象,然后调用我们的 onStartCommand 方法。
如果我们再调用
startService(i);
同样,它只是调用 onStartCommand 方法而不是 onCreate 方法。
问题:
如果我们这样做了会怎样
Intent i2 = new Intent(this, MyService.class);
startService(i2);
然后它会调用 onCreate 方法,创建第二个 MediaPlayer 对象,其中现在我们有 2 个媒体播放器对象,然后调用 onStartCommand 方法,还是它会意识到我们之前已经启动了服务并且只会调用 onStartCommand ?
【问题讨论】:
标签: java android android-intent service android-mediaplayer