Android 如何在onCreate之前强制运行onStart命令

Android 如何在onCreate之前强制运行onStart命令,android,Android,如果有人帮我解决这个问题,我真的很感激。 我有两个服务,第一个使用Intent向第二个服务发送数据。由于这是一项服务,我使用以下代码获得额外服务: @Override public int onStartCommand (Intent intent, int flags, int startId){ theme = intent.getExtras().getInt("theme"); Log.v("pos1 : ", String.valueOf(theme));

如果有人帮我解决这个问题,我真的很感激。 我有两个服务,第一个使用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)

这就是我所做的,我只是删除了onCreate方法,然后将传递的字符串传递给OnStartCommand

当我使用MediaPlayer服务时,该服务在OnCreate中创建媒体播放器,然后我将我的媒体播放器创建转换为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);
            }
然后我在onstart命令中得到日期

@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;

    }

这是不可能的。操作系统在实例化您的服务类后调用
onCreate()
,然后开始传递start命令。@Karakure不幸的是,情况就是这样。我逐行跟踪,发现系统在
onCreate()完成后调用
onStartCommand()
,您误解了我的评论。我的意思是不可能实现您想要的操作,因为系统总是在开始传递start命令之前首先调用
onCreate()
。没有办法让它做相反的事情。@karakuri-oh。谢谢你的解释。但是,您是否知道如何将数据从
服务
传递到
服务
,并在
onCreate
中使用?正如我所说,您不能。无论您想对该数据执行什么操作,都必须在
onStartCommand
中执行。