2015-12-21 85 views
3

我有一個應用程序保持一個ExoPlayer實例的全局實例,以便在後臺播放音頻流。 打開大量應用後,音頻停止播放。ExoPlayer停止在後臺播放

它發生如下:

  • 開放Activity即開始播放音頻
  • 按後退按鈕關閉Activity
  • 音頻仍在播放,並一直這樣做,如果你獨自一人離開設備(如打算)

但是,當您在最後一步之後打開一打以上的應用時,ExoPlayer會停止播放。 我的猜測是內存清理髮生,因此ExoPlayer被取消分配。我試圖從日誌中獲得更多信息,但迄今爲止這一提供的幫助很少。

保留android.app.Service內的ExoPlayer的參考沒有什麼區別。

我正在測試的設備是帶有Android 5.1.x的Nexus 5,但該問題也發生在其他設備上。

我在ExoPlayer documentation頁面,StackOverflow或Google找不到解決方案。有誰知道防止ExoPlayer停止播放的正確方法?

+1

您是否嘗試將它放在前臺'Service'上? –

+0

是的,我試着在'android.app.Service'中保留一個引用。 –

+0

我不知道它是否會有所作爲,如果它從該服務內創建,但... –

回答

10

爲確保Service在不被系統殺死的情況下儘可能保持活躍狀態​​,您需要確保將其啓動爲foreground service

這意味着將會有一個通知通知用戶當前服務,以便他可以意識到這一點。因此,您必須以相應的通知開始服務。以下是文檔中的示例:

Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text), 
      System.currentTimeMillis()); 
Intent notificationIntent = new Intent(this, ExampleActivity.class); 
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
notification.setLatestEventInfo(this, getText(R.string.notification_title), 
      getText(R.string.notification_message), pendingIntent); 
startForeground(ONGOING_NOTIFICATION_ID, notification); 
+0

非常感謝這些知識! +1 –

+0

@AnkitAggarwal這個代碼塊是否在你的最後? – Gattsu

+1

@RicardoLage不適用於android 7.0 – 2017-08-01 07:15:42