Я что-то борюсь с чем-то недавно, и я не могу двигаться вперед, пока он не будет правильно обработан. Вот моя проблема:Управление данными в фрагменте во время домашней кнопки нажмите
Описание
Я использую Bluetooth внутри моей деятельности на некоторое время теперь. Я использую его для передачи некоторых данных на удаленное устройство. Это сообщение является самой важной частью моего проекта, поскольку оно отправляет и принимает действия, которые изменяют пользовательский интерфейс и, возможно, изменяет конфигурацию. Я сохраняю фрагмент без интерфейса, чтобы содержать адаптер. Адаптер создается один раз, когда сам фрагмент создается. После этого фрагмент обходит создание адаптера, если он уже имеет экземпляр.
я сделать что-то вроде этого:
BluetoothFragment.java:
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "Created");
setRetainInstance(true);
if(adapter == null) {
Log.e(TAG, "Creating a new bluetooth adapter");
adapter = new KBluetooth(new Messenger(mHandler));
}
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// Checks if the attaching activity implements KBluetoothCallback
try {
mHandler.setCallback((KBluetoothActivities) activity);
}
catch(ClassCastException castExc) {
throw new ClassCastException(activity.toString() + " must implement KBluetoothCallback");
}
}
Почему я использую этот вид реализации? потому что я не хочу, чтобы адаптер Bluetooth повторно инициализировался после изменения конфигурации. Все работает нормально, пока я не нажму кнопку «домой» и не вернусь к действию. С этого момента фрагмент воссоздает новый адаптер, который означает, что адаптер был пустым, когда была запущена onCreate. Я знаю это, потому что перед созданием адаптера я получаю сообщение об ошибке в журнале.
Мой вывод:
Так вот мой вывод: даже если фрагмент будет уничтожен на изменение конфигурации, мой адаптер хранится в живых и экземпляр, но когда пресса домашний пользователь, фрагмент мусора каждые параметры, то содержит. Я прав?
Вопрос:
мне нужно держать ручку над адаптером Bluetooth, даже если пользователь находится вне приложения. Кто-нибудь знает, почему это происходит, или есть ли удобный способ избежать такой ситуации? В случае, если мне не удастся избежать уничтожения данных при нажатии на дом, есть ли способ провести различие между изменением дома и ориентации, чтобы я мог безопасно отключить Bluetooth?
Обратите внимание, что пользователь все еще может нажать и закрыть соединение Bluetooth, что прекрасно для меня, потому что он специально сказал: «Я больше не хочу, чтобы это приложение запускалось».
Заранее благодарю вас за помощь. Если вам нужны дополнительные спецификации, сообщения об ошибках или другие вещи, не стесняйтесь спрашивать.
Спасибо за один из самых подробных вопросов, которые я прочитал в течение длительного времени. Вероятно, я могу дать вам ответ, но для разработки вашего точного сценария потребуется немного назад и вперед. Вы соприкоснулись? Hangouts или # android-dev IRC на freenode, возможно? – Simon
@Simon Это может быть невозможно, поскольку это рабочий процесс и поддерживается внутри ограниченного периметра. Но если бы вы могли перенаправить меня на источник, который мог бы помочь, я был бы очень доволен. Какова ваша идея? что могло бы помочь мне сохранить экземпляр объекта над разрушением фрагмента? или проверить, нажата ли кнопка дома? Спасибо за вашу дальнейшую помощь. –