Ответ 1
По моему мнению, вы заглушаете свою музыку, играя в onPause из BaseActivity, вместо того, чтобы записывать ее в свою деятельность по воспроизведению музыки.
Пример:
public class BaseActivity extends AppCompatActivity{
@Override
public void onPause(){
//do things that common for all activities
}
}
public void MusicPlayActivity extends AppCompatActivity{
@Override
public void onPause(){
music.mute()
}
}
Это будет работать
UPDATE
Существует несколько способов определить, работает ли ваше приложение в фоновом режиме, но только один из них является полностью надежным:
Отслеживайте видимость своего приложения самостоятельно, используя методы Activity.onPause
, Activity.onResume
. Сохранять статус "видимости" в каком-либо другом классе.
Пример : Внедрить пользовательский класс приложения (обратите внимание на статический метод isActivityVisible()):
открытый класс MyApplication расширяет приложение {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}
Зарегистрируйте свой класс приложения в AndroidManifest.xml:
<application
android:name="your.app.package.MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name" >
Добавьте onPause
и onResume
к каждой Деятельности в проекте (вы можете создать общего предка для своих действий, если хотите, но если ваша активность уже расширена из MapActivity/ListActivity и т.д., вам все равно необходимо написать следующее вручную):
@Override
protected void onResume() {
super.onResume();
MyApplication.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
MyApplication.activityPaused();
}
ActivityLifecycleCallbacks были добавлены на уровне API 14 (Android 4.0). Вы можете использовать их для отслеживания активности пользователя вашего приложения в данный момент. Отметьте ответ на вопрос кукурузы ниже.