Перейти к содержимому

Где хранятся настройки android

  • автор:

Сохраняем настройки

Девочка встретила котёнка

Очень часто требуется сохранить какие-то настройки. Простой пример — девочка с удовольствием пользовалась нашей программой Счётчик ворон и вертела головой в поисках очередной птицы. Но вот незадача — когда девочка вечером закрывала своё приложение, то на следующий день счётчик обнулялся. А так хотелось узнать, сколько ворон можно насчитать за месяц. Но однажды в дождливый осенний день она встретила рыжее чудо. Впрочем, это уже совсем другая история.

Самый простой способ, который приходит в голову — сбросить данные в файл, а при запуске приложения считывать необходимые данные из файла. Второй вариант — работать с базой данных и хранить настройки там.

Рассмотрим сначала второй вариант. Хранить данные в базе данных не всегда оправдано, если данных не слишком много, они простые и нам не нужно анализировать данные на предмет, сколько мышек поймал котик в прошлом году и сколько часов он спал в январе и феврале.

Первый вариант с файлами хорош, например, для сохранения больших текстовых заметок. Естественно, и для простых данных мы тоже можем использовать файлы. Записали что-то в файл, а потом открыли его и считали данные.

На самом деле нет необходимости изобретать свой велосипед и придумывать свою структуру для хранения данных. В Android существует класс SharedPreferences (Общие настройки), разработанный специально для этих целей. Приложение автоматически создаёт файл в своей папке и хранит простые данные в виде «ключ — значение». Весь процесс создания, открытия, чтения файла оптимизирован и избавляет вас от головной боли.

Общие настройки поддерживают базовые типы boolean, String, float, long и int, что делает их идеальным средством для быстрого сохранения значений по умолчанию, переменных экземпляра класса, текущего состояния UI и пользовательских настроек. Они чаще всего используются для обеспечения постоянства данных между пользовательскими сессиями и доступа к ним компонентов приложения.

Сохранение значений параметров

Если у вас сохранился старый проект по подсчёту ворон, то можете снова его открыть и добавить новый код. Либо заново создайте проект по памяти, заодно проверите, как усвоили урок и сможете ли вы самостоятельно создать проект с нуля, не заглядывая на сайт за подсказкой.

Создаём переменную, представляющую экземпляр класса SharedPreferences, который отвечает за работу с настройками:

 private lateinit var prefs: SharedPreferences override fun onCreate(savedInstanceState: Bundle?)

Вы передаёте в указанный метод getSharedPreferences() имя вашего файла (файл будет создан автоматически) и стандартное разрешение по умолчанию MODE_PRIVATE — только приложение имеет доступ к настройкам. Если вам необходимо, вы можете создать несколько подобных файлов настроек.

Немного опередим события и представим, что приложение запущено, и мы считаем ворон весь день. Когда мы закрываем приложение, то нам необходимо сохранить информацию в «Общих настройках». Обычно для этих целей используют методы onPause() или onStop().

Чтобы внести изменения в настройки, нужно использовать класс SharedPreferences.Editor. Получить объект Editor можно через вызов метода edit() объекта SharedPreferences. После того, как вы внесли все необходимые изменения, вызовите метод apply(), чтобы изменения вступили в силу.

 override fun onPause() < super.onPause() // Запоминаем данные val editor = prefs.edit() editor.putInt(APP_PREFERENCES_COUNTER, counter).apply() >

Теперь при закрытии программы значение счётчика автоматически запишется в файл. При повторном запуске приложения нам уже не нужно инициализировать счётчик со значением 0. Мы можем прочитать сохранённое значение и использовать его для счётчика, чтобы продолжить подсчёт. Сделаем это в методе onResume().

 override fun onResume() < super.onResume() if(prefs.contains(APP_PREFERENCES_COUNTER))< // Получаем число из настроек counter = prefs.getInt(APP_PREFERENCES_COUNTER, 0) // Выводим на экран данные из настроек infoTextView.text = "Я насчитал $counter ворон" >> 

Мы проверяем сначала наличие ключа APP_PREFERENCES_COUNTER, а затем извлекаем из ключа его значение.

Вот и всё. Небольшие изменения в коде сделали программу продвинутой. Теперь вы можете спокойно закрывать и открывать программу, ваши данные не будут потеряны. При желании вы можете добавить кнопку для сброса счётчика. Это вам в качестве домашнего задания.

В теории показаны дополнительные примеры и даны подробные сведения об использовании «Общих настроек». Вам следует хорошенько разобраться в этом механизме, так как он часто используется на практике. Более того, некоторые программисты предпочитают использовать «Общие настройки» вместо базы данных, если это позволяет логика программы, так как это работает быстрее и потребляет меньше ресурсов. Выбор за вами.

Вместо послесловия

Не волнуйтесь, с котёнком всё в порядке. Девочка подобрала его и принесла домой. И добрая девочка по-прежнему пользуется нашей программой «Счётчик ворон». Наверное, биологом станет или ветеринаром.

При написании статьи использовались иллюстрации Рины З..

Исходный код (Kotlin)

Код класса активности.

 // Если этот код работает, его написал Александр Климов, // а если нет, то не знаю, кто его писал. package ru.alexanderklimov.counter import android.content.Context import android.content.SharedPreferences import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() < private lateinit var prefs: SharedPreferences private val APP_PREFERENCES_COUNTER = "counter" private var counter: Int = 0 override fun onCreate(savedInstanceState: Bundle?) < super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) prefs = getSharedPreferences("settings", Context.MODE_PRIVATE) crowButton.setOnClickListener < counter = ++counter infoTextView.text = "Я насчитал $counter ворон" >> override fun onPause() < super.onPause() // Запоминаем данные val editor = prefs.edit() editor.putInt(APP_PREFERENCES_COUNTER, counter).apply() >override fun onResume() < super.onResume() if(prefs.contains(APP_PREFERENCES_COUNTER))< // Получаем число из настроек counter = prefs.getInt(APP_PREFERENCES_COUNTER, 0) // Выводим на экран данные из настроек infoTextView.text = "Я насчитал $counter ворон" >> > 

Исходный код (Java)

Код класса активности

 // Если этот код работает, его написал Александр Климов, // а если нет, то не знаю, кто его писал. package ru.alexanderklimov.counter; import android.content.Context; import android.content.SharedPreferences; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class MainActivity extends ActionBarActivity < private int mCounter; private TextView mInfoTextView; // имя файла настройки public static final String APP_PREFERENCES = "mysettings"; public static final String APP_PREFERENCES_COUNTER = "counter"; private SharedPreferences mSettings; public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE); mInfoTextView = (TextView) findViewById(R.id.textViewInfo); >public void onClick(View v) < // Выводим на экран mInfoTextView.setText("Я насчитал " + ++mCounter + " ворон"); >@Override protected void onResume() < super.onResume(); if (mSettings.contains(APP_PREFERENCES_COUNTER)) < // Получаем число из настроек mCounter = mSettings.getInt(APP_PREFERENCES_COUNTER, 0); // Выводим на экран данные из настроек mInfoTextView.setText("Я насчитал " + mCounter + " ворон"); >> @Override protected void onPause() < super.onPause(); // Запоминаем данные SharedPreferences.Editor editor = mSettings.edit(); editor.putInt(APP_PREFERENCES_COUNTER, mCounter); editor.apply(); >> 

Где Android Studio хранит все свои настройки в Linux

Хочу почистить кеши, а может даже переустановить студию. Какие папки нужно почистить, чтобы избавиться от мусора, накопленного за время пользования? знаю про ~/.android ~/.AndroidStudio ~/.gradle/caches (чтобы облегчить индексирование) Может есть что то ещё? Как результат хочу получить «чистую» установку, не обременённую ничем

Отслеживать
задан 22 мар 2019 в 7:55
Александр Тарабрин Александр Тарабрин
1,373 1 1 золотой знак 11 11 серебряных знаков 21 21 бронзовый знак

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

  1. ~/.AndroidStudio/, конфиги и система
  2. ~/.android
  3. ~/.local/share/applications/jetbrains-studio.desktop
  4. Стандартная папка для студии — /usr/local/, или /opt/ для всех.
  5. SDK обычно в ~/Android.

В дополнение глянуть: whereis android

Отслеживать
ответ дан 22 мар 2019 в 8:06
149 1 1 серебряный знак 9 9 бронзовых знаков

  • linux
  • android-studio
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.8.3130

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Где в облаке хранятся настройки приложений android?

Суть такая: после очередного сброса android смартфона и подключения google аккаунта, смартфон начал скачивать из облака настройки приложений по состоянию на. январь 2014 — т.е. на тот момент когда я отключил все синхронизации android кроме контактов и календаря. Вопрос: где найти эти сохраненные в облаке данные чтобы уничтожить?
В промежутке между сброс и входом в гугл аккаунт на смартфоне — зашел в google play с ПК и удалил оттуда устройство. Но после входа — опять начал тянуть эти старые настройки.
https://www.google.com/settings/dashboard здесь ничего не нашел.

  • Вопрос задан более трёх лет назад
  • 3615 просмотров

Где хранятся настройки APK приложений Android?

Какой файл отвечает за настройки приложения и где он храниться (в прошивке среди системных файлов телефона или на SD-карте)?

Голосование за лучший ответ

всегда в телефоне, в корневой папке приложения должен вроди быть

Похожие вопросы

Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *