【发布时间】:2014-02-07 03:31:01
【问题描述】:
我正在构建一个简单的 android 应用程序,它有两个活动和一个 IntentService。我的 IntentService 会在每个活动上播放音乐(这就是我想要的),但如果我离开应用程序,音乐仍然会播放(例如:如果我按下主页按钮,它将带我到桌面,将我的活动置于 onpause 状态,但音乐从那个应用程序仍在播放)。任何帮助将不胜感激......
代码如下
主要活动
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent serviceIntent= new Intent(this, BackgroundMusic.class);
startService(serviceIntent);
}
public void ShipPick(View view){
Intent activityIntent= new Intent(this, ShipChoiceActivity.class);
startActivity(activityIntent);
}
}
背景音乐服务
public class BackgroundMusic extends IntentService {
MediaPlayer mp;
public BackgroundMusic() {
super("BackgroundMusic");
}
Handler HN = new Handler();
private class PlayMusic implements Runnable {
public void PLayMusic(){
}
public void run(){
mp = MediaPlayer.create(getApplicationContext(), R.raw.musicfile);
mp.start();
}
}
@Override
protected void onHandleIntent(Intent intent) {
HN.post(new PlayMusic());
}
public void onPause() {
mp.pause();
}
public void onResume() {
mp.start();
}
protected void onStop() {
mp.stop();
mp = null;
}
}
第二次活动
public class ShipChoiceActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ship_choice);
}
}
清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.starwars"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:debuggable="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<service android:name=".BackgroundMusic" />
<activity
android:name="com.example.ship.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:label="@string/app_name" android:name="ShipChoiceActivity"/>
</application>
</manifest>
【问题讨论】:
-
将服务绑定到活动。
-
在您的活动的 onPause 功能中,停止该服务。