Я написал операцию (вызванную службой), чтобы сделать popupwindow и завершил как действие, так и обслуживание, когда я нажимаю кнопку на экране или нажимаю кнопку «Назад». Вот код.Android - активность не закрыта кнопкой «Назад»
обслуживание:
public class AlarmService extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Intent popupIntent = new Intent(AlarmService.this, AlarmPopup.class);
popupIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(popupIntent);
return super.onStartCommand(intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
активность:
public class AlarmPopup extends AppCompatActivity {
PopupWindow popup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Handler handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
onShowPopup();
}
};
handler.postDelayed(r, 500);
}
public void onShowPopup() {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View view = inflater.inflate(R.layout.alarm_popup, null);
popup = new PopupWindow(view, LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT, true);
popup.setBackgroundDrawable(new BitmapDrawable());
popup.showAtLocation(view, Gravity.CENTER, 0, 0);
view.findViewById(R.id.button).setOnClickListener(mClickListener);
}
Button.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(AlarmPopup.this, AlarmService.class);
stopService(i);
popup.dismiss();
finish();
}
};
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent i = new Intent(AlarmPopup.this, AlarmService.class);
stopService(i);
popup.dismiss();
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
Когда я нажал на кнопку на экране, все идет хорошо, что я ожидал. Но когда я нажимаю кнопку «Назад», она закрывает только всплывающее окно, а действие службы & еще не завершено. Сервис и активность завершены, когда я снова нажал кнопку «Назад», но я хочу закончить их все одним щелчком мыши.
Я также попытался это вместо OnKeyDown(),
@Override
public void onBackPressed() {
super.onBackPressed();
Intent i = new Intent(AlarmPopup.this, AlarmService.class);
stopService(i);
popup.dismiss();
finish();
}
Но это также не работает. Что мне нужно сделать в этой ситуации?
О, еще одна вещь. Журнал «W/InputEventReceiver: попытка завершить входное событие, но приемник входных событий уже удален». печатается при нажатии кнопки «Назад». Это причина этой проблемы?
О, спасибо, миллион. Этот код работает! – Laione