MediaPlayer 在打开另一个应用程序后停止在后台播放

MediaPlayer stop playing on background after open another app

我有一个简单的 android 应用程序。我想继续在后台播放我的歌曲,所以我的主页按钮不会停止播放音乐。到目前为止,我的歌曲播放得很好,但是例如,如果我打开 google chrome 浏览器,它总是会停止。 android 似乎对我的应用程序做了一些事情并停止工作。任何想法?

我的 MainActivity 是:

public class MainActivity extends ActionBarActivity {

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

        Intent si = new Intent(this, MediaPlayerService.class); 
        si.setAction(MediaPlayerService.ACTION_PLAY);
        startService(si);
    }

我的服务是:

public class MediaPlayerService extends Service {

    private static final String TAG = "MediaPlayerService";

    public static final String ACTION_PLAY = 
            "com.example.action.PLAY";

    private MediaPlayer mMediaPlayer;

    private String source;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "onStartCommand");
        if (intent.getAction().equals(ACTION_PLAY)) {
            Log.d(TAG, "enter if: onStartCommand");
            mMediaPlayer = MediaPlayer.create(this, R.raw.one_small_step);
            Runnable r = new Runnable() {
                public void run() {
                    mMediaPlayer.setLooping(true);
                    mMediaPlayer.setVolume(100,100);
                    mMediaPlayer.start();
                }
            };

            Thread t = new Thread(r);
            t.start();
        }
        return START_NOT_STICKY;
    }

    @Override
    public void onDestroy() {
        Log.d(TAG, "onDestroy");
        mMediaPlayer.stop();
    }

    public IBinder onBind(Intent intent) {
        return null;
    }

我的清单文件:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>
        <service 
            android:name="com.example.testmediaplayer.MediaPlayerService" >
        </service>
    </application>

您的服务需要使用通知,这样它就不会在您离开应用后被销毁。

也许this tutorial对你有帮助。

好的。这似乎与 Moto G

的内存管理非常糟糕有关

http://www.talkandroid.com/227246-moto-g-2014-suffering-from-poor-memory-management-apps-constantly-closing/

http://forum.xda-developers.com/moto-g-2014/help/music-playback-stopped-multitasking-t2905460

他们真丢脸:(

我会把它放在最后。