У меня есть служба, которая обрабатывает соединение трубки и останавливает медиаплеер, если он отключенручка гарнитура отключается после того, как приложение будет прокатывается из списка последних приложений
здесь код
private static int headsetSwitch = 1;
public static boolean headsetconnected = false;
public BroadcastReceiver headsetReciever = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent
.getAction())) {
// Pause the playback
mediaPlayer.pause();
}
if (intent.hasExtra("state")) {
if (headsetconnected && intent.getIntExtra("state", 0) == 0) {
headsetconnected = false;
Toast.makeText(getApplicationContext(),
"headsetconnected = false", Toast.LENGTH_SHORT)
.show();
headsetSwitch = 0;
}
else if (!headsetconnected
&& intent.getIntExtra("state", 0) == 1) {
headsetconnected = true;
Toast.makeText(getApplicationContext(),
"headsetconnected = true", Toast.LENGTH_SHORT)
.show();
headsetSwitch = 1;
// Lockscreencontrol();
}
}
switch (headsetSwitch) {
case (0):
headsetDisconnected();
break;
case (1):
break;
}
}
};
private void headsetDisconnected() {
try {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
if (PlayerActivity.play != null) {
PlayerActivity.play
.setImageResource(R.drawable.ic_play_arrow_white_36dp);
}
if (MainActivity.play != null) {
MainActivity.play
.setImageResource(R.drawable.ic_play_arrow_white_24dp);
}
if (getallsongs.play != null) {
getallsongs.play
.setImageResource(R.drawable.ic_play_arrow_white_24dp);
}
}
} catch (Exception e) {
}
}
Этот код работает отлично, если приложение минимизировано и служба работает
проблема возникает, если мы красть приложение от списка последних приложений
в настоящее время ссылаюсь на эту https://stackoverflow.com/a/18618060/3126760
ответ говорит Don't ever swipe apps
, но это не общее поведение пользователей
приложение будет просто крах и попытаться перезапустить службу и снова врезаться
Мой вопрос
Как мы можем управлять этим конкретным событием жизненного цикла, которое не обрабатывается
ondestroy
по адресу onpause
как мы можем управлять приложением, попавшие службы работает в фоновом режиме и приложение было прокатывается из списка последних приложений
Я видел приложения, которые спокойно закрыть приложение один раз вышеприведенного случая происходит
Как мы можем просто остановить приложение без его разбивания.
Я даже пытался управлять unregister listeners
когда приложение прокатывается с использованием
<service
android:name="com.musicplayer.mp3player.PlayService"
android:enabled="true"
android:stopWithTask="false"
android:label="Audio-playback service" >
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
, а затем
общественного недействительный onTaskRemoved (Intent rootIntent) {
// unregister listeners
// do any other cleanup if required
try {
unregisterReceiver(headsetReciever);
} catch (Exception e) {
// TODO: handle exception
}
// stop service stopSelf();
}
делает вызов stopForeground(true);
в ondestroy
вызывают такую проблему.
предоставьте пояснения для ответа, который вы можете предоставить, спасибо.
Можете ли вы опубликовать StackTrace о том, что вы называете _ Приложение просто потерпит крах и попытается перезапустить службу, а затем снова свернуть _ –