У меня есть активность, которая закрывается только после многократного нажатия кнопки аппаратного обеспечения (более или менее 2 раз).Что это значит, что при нажатии на кнопку многократно запираться на андроид?
Я попытался обнаружить, когда это происходит, и я думаю, что это должно быть связано с IntentService, который я использую, который использует broadcastReceiver для получения какой-либо информации, но я не уверен, поскольку сообщение об ошибке или предупреждение отображается.
У кого-нибудь, у кого больше опыта, есть идея, что обычно означает, что я должен многократно нажимать на него, чтобы закрыть его?
Я даже пытался перекрывая onBackPressed(), но это не работает:
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
UPDATE
Так я вставил несколько журналов консоли OnCreate() и OnDestroy() деятельности, так что кажется, что когда-то на деятельность когда я нажимаю кнопку «назад», действие, похоже, снова создается (onCreate() активности вызывается снова), а затем вызывается onDestroy.
UPDATE 2
Это метод, который я думаю, может быть запуская проблему:
private void startRestaurantsModelService(String url) {
if(restaurantsBroadcastReceiver == null){
//Intent to use RestaurantModel to getRestaurantsJsonArrays
Intent getRestaurants = new Intent(HomeActivity.this, RestaurantModel.class);
getRestaurants.putExtra("urlRestaurants", url);
startService(getRestaurants);
//The receiver that will receive restaurants list from RestaurantModel IntentService
restaurantsBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle restaurantsBundle = intent.getExtras();
//Assign Restaurants received from service
restaurants = (List<Restaurant>) restaurantsBundle.getSerializable("restaurantsList");
//Now that we have restaurants list configure the RecyclerView
recyclerViewConfiguration();
//We need to know number of open restaurants so we can use different layout settings
//for closed restaurants in adapter using getItemViewType()
numberOfOpenRestaurants = restaurantsBundle.getInt("numberOfOpenRestaurants");
restaurantAdapter.setNumberOfOpenRestaurants(numberOfOpenRestaurants);
//Then update the RecyclerView
updateRecyclerView();
if (loadingDialog.isShowing()) {
loadingDialog.dismiss();
}
}
};
registerReceiver(restaurantsBroadcastReceiver, new IntentFilter(RestaurantModel.BROADCAST_ACTION));
}
}
Я эту трансляцию регистрацией в OnPause:
@Override
protected void onPause() {
super.onPause();
try {
unregisterReceiver(restaurantsBroadcastReceiver);
restaurantsBroadcastReceiver = null;
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
Любые операции фрагментации в стеке? – laalto
Обычно это означает, что у вас есть что-то на отрезке фрагмента или у вас есть несколько действий, возможно, одинаковых, уложенных друг на друга – njzk2