Java 在android中,每次启动活动时都会播放多次音频文件?

Java 在android中,每次启动活动时都会播放多次音频文件?,java,android,Java,Android,我正在尝试创建一个带有背景音乐的应用程序。我的应用程序使用两个活动和一个服务(在后台播放音乐)。现在,我一回到原来的活动就被卡住了,整个过程都在重复,两个歌曲实例一起播放。这个问题进一步加剧。请帮忙。安卓系统的新手:P 主要活动的源代码: package com.example.app; import android.app.Activity; import android.content.Intent; import android.media.MediaPlayer; import and

我正在尝试创建一个带有背景音乐的应用程序。我的应用程序使用两个活动和一个服务(在后台播放音乐)。现在,我一回到原来的活动就被卡住了,整个过程都在重复,两个歌曲实例一起播放。这个问题进一步加剧。请帮忙。安卓系统的新手:P

主要活动的源代码:

package com.example.app;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {
MediaPlayer mediaPlayer;
public final static String EXTRA_MESSAGE="com.example.app.MESSAGE";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //the service just plays the a.mp3 in res/raw
    startService(new Intent(getBaseContext(), Music.class));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void sendMessage(View view){
    //this activity just displays the entered text
    Intent intent=new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message=editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

}
服务代码: package com.example.app

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;

 public class Music extends Service {

@Override
   public IBinder onBind(Intent arg0) {
      return null;
}

    @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
  MediaPlayer mediaPlayer=MediaPlayer.create(this,R.raw.a);
  if(!mediaPlayer.isPlaying())
  {
       mediaPlayer.start();
  }
  return START_STICKY;
   }

   }

在您的主要活动中添加这种代码的和平,希望对您有所帮助

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// this line let's the service start only once.
if(savedInstanceState==null)
{
startService(new Intent(getBaseContext(), Music.class));
}
}

在Music.class中,通过isplay()显示您的服务代码来检查音乐是否正在播放。@Sam it dit help:/在sendMessage()方法中,当您启动新活动(DisplayMessageActivity)时,当前活动(MainActivity)尚未完成。因为您没有调用finish();方法。在这种情况下,上述答案应该有效。我自己试过了。