Differences

This shows you the differences between two versions of the page.

Link to this comparison view

fss:sessions:session4-android [2019/07/11 16:19]
beniamin.dobre [Threading in Android]
fss:sessions:session4-android [2019/07/11 18:36] (current)
beniamin.dobre [Handlers and Runnables]
Line 1: Line 1:
-====== Android Session ​3Bluetooth Low Energy Communication ​====== +====== Android Session ​4Data Management ​====== 
-{{:​fss:​sessions:​android_bluetooth_low_energy_communication.pdf|Slides}}+{{:​fss:​sessions:​android__data_management.pdf|Slides}}
  
 ===== Objectives ===== ===== Objectives =====
   * Store data using SharedPreferences   * Store data using SharedPreferences
   * Build and interact with databases in Android   * Build and interact with databases in Android
 +
 +==== Shared preferences ====
 +The Android framework offers an API for storing key-value pairs accessible only to your app. Usually they are used for persisting settings (user preferences).
 +
 +The key-value pairs are stored in files. You can use one or several files, depending on your app's design. In order to access them, you need to obtain a SharedPreference object using methods provided by the Context class. These files can also be specific to an activity.
 +<code Java>
 +// In this example we are in MainActivity
 +
 +SharedPreferences sharedPref = this.getPreferences(MODE_PRIVATE); ​
 +// or 
 +sharedPref = this.getSharedPreferences("​mysettings",​ Context.MODE_PRIVATE);​
 +// or
 +sharedPref = PreferenceManager.getDefaultSharedPreferences(context);​
 +</​code>​
 +
 +
 +   ​*[[https://​developer.android.com/​reference/​android/​content/​Context.html#​getSharedPreferences(java.lang.String,​%20int)|Context.getSharedPreferences]] is used when we have multiple shared preferences files and we want to obtain the given name
 +   * [[https://​developer.android.com/​reference/​android/​app/​Activity.html#​getPreferences(int)|Context.getPreferences]] if we only use one shared preference file for that activity. We can only provide the MODE_PRIVATE since the other options have been deprecated from API Level 17 for security reasons. They granted read and write access to these files to other apps.
 +   * [[https://​developer.android.com/​reference/​android/​preference/​PreferenceManager.html#​getDefaultSharedPreferences(android.content.Context)|PreferenceManager.getDeaultSharedPreferences]] provides the default file for storing the key-value pairs for the entire app.
 +
 +<code Java>
 +SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();​
 +editor.putString("​my_key",​ "​my_value"​);​
 +editor.putBoolean("​my_bool",​ true);
 +editor.putInt("​my_int",​ 0);
 +
 +// Must save them!
 +editor.apply(); ​ //async write to disc
 +// or use
 +editor.commit();​ //​immediately writes to disc, avoid using it from UI thread.
 +
 +//obtain values:
 +sharedPref.getString("​my-key",​ "​default-value"​);​
 +</​code>​
  
 ==== Threading in Android ==== ==== Threading in Android ====
Line 65: Line 99:
         HandlerThread thread = new HandlerThread("​I handle things"​);​         HandlerThread thread = new HandlerThread("​I handle things"​);​
         thread.start();​         thread.start();​
-        writeHandler = new Handler(thread.getLooper());​+        ​Handler ​writeHandler = new Handler(thread.getLooper());​
  
         writeHandler.postDelayed(new Runnable() {         writeHandler.postDelayed(new Runnable() {
Line 80: Line 114:
  
  
-==== TASK ====+==== TASKS ====
   - Setup SharedPreferences (Follow TODO 1)   - Setup SharedPreferences (Follow TODO 1)
       - Get sharedPreferences       - Get sharedPreferences
Line 93: Line 127:
       - Load data on a different thread (not on the UI thread)       - Load data on a different thread (not on the UI thread)
       - Set the list of records to the adapter on the UI thread       - Set the list of records to the adapter on the UI thread
 +
 +===== Files =====
 +{{:​fss:​sessions:​android_4_start.zip|}}
fss/sessions/session4-android.1562851154.txt.gz · Last modified: 2019/07/11 16:19 by beniamin.dobre
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0