如果有人帮我解决这个问题,我真的很感激。 我有两个服务,第一个使用Intent将数据发送到第二个服务。因为它是一个服务,我在下面的代码中用来获取额外内容:
@Override
public int onStartCommand (Intent intent, int flags, int startId){
theme = intent.getExtras().getInt("theme");
Log.v("pos1 : ", String.valueOf(theme));
return START_STICKY;
}
之后,声明onCreate()。
@Override
public void onCreate() {
super.onCreate();
if(theme != 0)
// do something
Log.v("pos2 : ", String.valueOf(theme));
}
但是,在onCreate()上的所有任务执行之前,变量“theme”仍然等于零。然后onStartCommand()执行。 调试的结果是这样的
pos2 : 0
pos1 : 5 (the value that have sent from first service)
答案 0 :(得分:0)
这就是我所做的,好吧,我删除了onCreate方法,然后将传递的String传递给OnStartCommand。
当我使用MediaPlayer服务时,该服务在OnCreate中创建媒体播放器,然后我将Media Player创建转移到OnStartCommand并删除了OnCreate方法。
if (view == play) {
String newstring= "Hello.mp3";
Intent serviceIntent = new Intent(getActivity(), BackgroundAudioService.class);
serviceIntent.putExtra("NewSong", newstring);
getActivity().startService(serviceIntent);
play.setVisibility(View.GONE);
pause.setVisibility(View.VISIBLE);
}
然后我在OnStartCommand中获取日期
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
ChalisaName= intent.getStringExtra("NewSong");
mediaPlayer = MediaPlayer.create(getApplication(), Uri.parse(Environment.getExternalStorageDirectory().getPath()+ "/MyPath/" + NewSong));
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
mediaPlayer.setOnCompletionListener(this);
return START_STICKY;
}