我有一个Android应用程序,有多个活动 第一个主要活动使用媒体播放器启动背景音乐。当应用程序是im forground时,如何让这个音乐继续播放 我尝试在onpause方法上停止应用程序并在onresume方法上启动它,但在每个活动中使用相同的代码很麻烦 非常感谢
答案 0 :(得分:2)
如果您想要播放onPause,则无法停止播放,直到应用程序位于前台。原因是如果从活动A转移到活动B,将调用活动A的onPause和活动B的onResume / onCreate。要实现您想要实现的内容,您需要检查应用程序何时进入后台。为此,请使用以下功能:
public boolean isAppOnForeground(final Context context)
{
final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses == null)
{
return false;
}
final String packageName = context.getPackageName();
for (final RunningAppProcessInfo appProcess : appProcesses)
{
if ((appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) && appProcess.processName.equals(packageName))
{
return true;
}
}
return false;
}
对于背景:
public static boolean isApplicationBroughtToBackground(final Context context)
{
final ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty())
{
final ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName()))
{
return true;
}
}
return false;
}
要调用此函数,请创建基本活动并覆盖其onPause()和onResume()方法,扩展基本活动以代替活动。
希望这会对你有所帮助。
Shraddha
答案 1 :(得分:1)
你应该在创建后将媒体播放器绑定到服务器上!您可以在andriod开发者页面上查看服务:http://developer.android.com/reference/android/app/Service.html
媒体播放器绑定到服务后,哪个活动处于活动状态并不重要。