应用程序关闭后,用于媒体控件的 Android 广播接收器停止工作
Posted
技术标签:
【中文标题】应用程序关闭后,用于媒体控件的 Android 广播接收器停止工作【英文标题】:Android broadcast receiver for media controls stops working after app is closed 【发布时间】:2020-04-07 13:14:07 【问题描述】:所以我一直在尝试构建一个音乐播放器应用程序,尽管访问了 *** 上的所有页面,但我仍然遇到一个问题。代码大部分工作正常,但是当我按下后退按钮关闭应用程序时,操作按钮停止工作,即使当我按下主页按钮时它们工作正常。我认为即使我不希望关闭应用程序,广播接收器也会取消注册。代码如下:
public BroadcastReceiver broadcastReceiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
String action = intent.getExtras().getString("actionname");
Helper.makeToast(context, action);
switch (action)
case CreateNotification.ACTION_PREVIUOS:
//play previous
case CreateNotification.ACTION_PLAY:
if (isPlaying)
//pause
else
// play
break;
case CreateNotification.ACTION_NEXT:
//play next
;
这是主要活动的onresume方法
@Override
protected void onResume()
super.onResume();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
registerReceiver(broadcastReceiver, new IntentFilter("TRACKS_TRACKS"));
startService(new Intent(getBaseContext(), OnClearFromRecentService.class));
这是服务
public class OnClearFromRecentService extends Service
@Nullable
@Override
public IBinder onBind(Intent intent)
return null;
@Override
public int onStartCommand(Intent intent, int flags, int startId)
return START_STICKY_COMPATIBILITY;
@Override
public void onDestroy()
super.onDestroy();
@Override
public void onTaskRemoved(Intent rootIntent)
stopSelf();
在清单中:
<receiver .services.OnClearFromRecentService" />
所以我的问题是:当我关闭应用程序时,广播接收器是否会自动取消注册?如果是这样,我该如何防止这种情况?关闭应用时如何保持广播接收器正常工作?
【问题讨论】:
【参考方案1】:当您关闭应用时,此类接收器会自动取消注册。这是对的。但是,您必须在 onStop() 中从您的接收器中注销。因为如果您不这样做,您将在 LogCat 中收到 LeakIntentMemory 错误消息,但您的应用程序不会崩溃。您可以从 logcat 中检查它。我认为如果你想在你的应用关闭时收到一些东西,你必须在 androidManifest 中声明你的接收者并带有一个动作名称。
<receiver android:name=".YourReceiver" >
<intent-filter>
<action android:name="first.custom.action"> </action>
</intent-filter>
</receiver>
【讨论】:
还是一样的结果。在应用程序运行时单击操作按钮时,它可以正常工作。但是,当我单击后退按钮关闭应用程序时,操作按钮就会停止工作。以上是关于应用程序关闭后,用于媒体控件的 Android 广播接收器停止工作的主要内容,如果未能解决你的问题,请参考以下文章
媒体控件栏在 VideoView Android 中出现一秒钟后消失
在 cordova/phonegap Android 应用程序上关闭屏幕后媒体停止播放