2016-09-20 7 views
1

В настоящее время Google работает с бета-версиями на некоторых устройствах Chromebook. У меня есть приложение в Google Play и после его загрузки на Chromebook я столкнулся с этой проблемой: активность приложения перезапускается. Каждый раз при нажатии кнопки «Максимизировать». Конечно, я хочу поддерживать совместимость своего приложения с Chrome OS. Я не уверен, где проблема, на устройстве Android он работает хорошо.Android-приложение для Chrome OS перезапускается каждый раз при нажатии кнопки «Максимизировать»

Эта проблема может быть хорошо воспроизводит с простым приветом мира проектом сделал с Android студией (я использую версию 1.5):

В Android студии нажмите кнопку «Начать новый проект Android-студию», введите имя и нажмите далее. Я установил совместимость для API 8+, а затем выбрал Empty activity. Проект устанавливается с помощью мин Sdk 8 и целевой SDK 23. Для OnCreate я добавил простой Toast сообщение:

Toast.makeText(this, "Recreated", Toast.LENGTH_SHORT).show(); 

Привели APK можно протестировать на Chrome OS. При каждом нажатии кнопки «Максимизировать» я вижу сообщение «Воссозданное».

Я ничего не сделал для AndroidManifest.xml. Но я проверил флаги:

 android:configChanges="orientation|keyboardHidden" 
     android:windowSoftInputMode="adjustResize" 

без успеха.

Вот как выглядит мой код активности:

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toast.makeText(this, "Recreated", Toast.LENGTH_SHORT).show(); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 
    Toast.makeText(this, "onConfigurationChanged", Toast.LENGTH_SHORT).show(); 
} } 

Я ожидал, что onConfigurationChanged события будет срабатывать каждый раз, когда я нажимаю «Maximize» кнопка, но вместо этого было названо onCreate().

Пожалуйста, что я должен сделать, чтобы предотвратить перезапуск Activity каждый раз при нажатии кнопки «Максимизировать». И как обрабатывать это событие «изменить размер».

ответ

0

android:configChanges="orientation|keyboardHidden|screenLayout|screenSize|smallest‌​ScreenSize" Активность в манифестке должна помочь.

Но, к сожалению, рекомендуется убивать активность при изменении конфигурации.

+0

Спасибо, я попробовал его с "screenSize", но он не работает. С «ориентацией | keyboardHidden | screenSize» в манифесте активность не перезапускается на устройстве Android, но на хромовой ОС она воссоздана ... Если ее действительно нужно перезапустить, я должен начать хранить все данные в статических переменных и загружать их обратно ко всем просмотров в «onCreate». Это означает инициализацию всех представлений, структур и т. Д. ... большие накладные расходы. Надеюсь, что есть некоторое обходное решение ... – user1063364

+0

Попробуйте сначала все: «mcc», «mnc», «locale», «touchscreen», «клавиатура», «keyboardHidden», «Навигация», «ScreenLayout», «fontScale», «uiMode», «ориентация», «screenSize», «smallestScreenSize», «плотность» :) –

+0

Hah, идеальная идея:) Правильные настройки: «orientation | keyboardHidden | screenLayout | screenSize | smallestScreenSize». Если я удалю screenLayout или smallestScreenSize, это не сработает. Но «воссозданный» показывается только один раз, и каждый раз, когда я нажимаю «максимизировать», я вижу сообщение «onConfiguration». Я тестировал его сейчас с помощью дуговой сварщика, но проверю его на chromebook как можно скорее. Напиши здесь окончательный результат. Большое спасибо. – user1063364