Preferences DataStore in 10min (SharedPreferences deprecated)

Поділитися
Вставка
  • Опубліковано 26 лис 2020
  • In this video you will learn to read from and write to preferences datastore in android.
    ⭐ Get certificates for your future job
    ⭐ Save countless hours of time
    ⭐ 100% money back guarantee for 30 days
    ⭐ Become a professional Android developer now:
    pl-coding.com/premium-courses...
    💻 Let me personally review your code and provide individual feedback, so it won't backfire and cost you a fortune in future:
    elopage.com/s/philipplackner/...
    Get the source code for this video here:
    github.com/philipplackner/Dat...
    Regular Android tutorials on my Instagram: / _philipplackner_
    Checkout my GitHub: github.com/philipplackner

КОМЕНТАРІ • 111

  • @CoderzF1
    @CoderzF1 2 роки тому +36

    This was actually a lot easier to follow than the official CodeLab for DataStore Preferences. They were leading on a goose chase of using repositories

    • @kommunismusarbeiterjonny
      @kommunismusarbeiterjonny 2 роки тому

      Yep

    • @scanskynero3083
      @scanskynero3083 Рік тому

      truu. I have never wanted to rip my hair out. I stopped halfway because I kinda realized, the guide was intended for people migrating from sharedPreferences

  • @gauravthakkar802
    @gauravthakkar802 3 роки тому

    Really Thankful to you Philip
    Everyday before I sleep I make sure I see one of your videos
    Thanks!

  • @Zeeshan-Syed
    @Zeeshan-Syed 3 роки тому +6

    Love u man..
    U just upload videos exactly what I'm missing or want to learn and without asking you...
    Your choice of video topic is on point..

    • @PhilippLackner
      @PhilippLackner  3 роки тому +4

      Thank you, what else you want to learn? I'm always open for new ideas. Would be cool if it fits in a 10-20min video

    • @vidyesh
      @vidyesh 3 роки тому

      @@PhilippLackner Jetpack compose

    • @AyushSachan2211
      @AyushSachan2211 3 роки тому +3

      @@PhilippLackner a dedicated video on api calls and image processing.

    • @xD-saleem
      @xD-saleem 3 роки тому +1

      @@AyushSachan2211 yes please

    • @iam-learning6374
      @iam-learning6374 3 роки тому +2

      @@PhilippLackner Work Manager

  • @soontaek
    @soontaek 3 роки тому +12

    Thank you again! This will be very useful for me very soon. And I have some feedback for you :)
    The way you make your video are pretty good, and I think it would be even better if you include a brief section at the start of the video (maybe after the demo) where you talk about the big steps like an overview.
    For example:
    1. Add dependencies.
    2. Create Datastore object.
    3. Create function to save data.
    4. Create function to read data.
    5. Calling the functions from buttons.
    6. ...
    For me this kind of overview helps me follow better because I know where we're at an where we're going next, especially when it's something new.
    If I have no idea of the big steps I tend to wonder:
    So are we done with the object creation? Ah not yet.
    Done yet? Not yet.
    Is this the last variable that we need?
    Nope we need one more, no actually one more...
    (I get distracted like this)
    This is my personal feedback for you to add to others' feedback and see what suits best for your audience as a whole :)
    I hope your channel grows even more as days pass, keep up the good work, I'll always support you for the efforts you put in these contents. Thank you!

  • @haissayf
    @haissayf 3 роки тому

    I was hoping to find a datastore tutorial by PL. 😊

  • @RRRazzzaRRR
    @RRRazzzaRRR 2 роки тому +9

    deprecated: createDataStore() ->
    NEW:
    val Context.dataStore by preferencesDataStore(name = "settings")
    data = dataStore
    maybe you have some problems with Preferences, you should use it:
    import androidx.datastore.preferences.core.edit
    import androidx.datastore.preferences.preferencesDataStore

  • @vishnusatheesh5633
    @vishnusatheesh5633 Рік тому

    Thanks man 👍🏻
    You're a gem 💎

  • @kumarshubham2812
    @kumarshubham2812 3 роки тому +21

    plz make a playlist on jetpack architecture components!!!

  • @Alchemist10241
    @Alchemist10241 2 роки тому +10

    In version 1.0.0 (stable version):
    Instead of:
    val dataStoreKey = preferencesKey(key)
    Use the code below in save and read functions:
    val dataStoreKey = stringPreferencesKey(key)

  • @ammarseud5461
    @ammarseud5461 3 роки тому +9

    Thanks for the video, useful stuff as always!
    Also, and I don't want to sound like a smart-ass, but I think we only need to nullify the binding variable in fragments (since only fragments have different lifecycles for their instance and their view, which causes the memory leak in the first place).

    • @PhilippLackner
      @PhilippLackner  3 роки тому +2

      ah you're totally right, I just got used to that since I mostly do my stuff in fragments. Thanks!

    • @techmarinar
      @techmarinar 2 роки тому +2

      Thank you for the valued reminder

  • @techmarinar
    @techmarinar 2 роки тому

    Thanx man this was very helpful 😊

  • @danyelsh874
    @danyelsh874 2 роки тому

    you're the best philipp

  • @maxdev903
    @maxdev903 3 роки тому +20

    In version 1.0.0-alpha07 the Context.createDataStore extension function has been removed and replaced with globalDataStore property delegate.

    • @manusmccolgan9431
      @manusmccolgan9431 Рік тому

      For anyone wondering that would be:
      // At the top level of your kotlin file:
      val Context.dataStore: DataStore by preferencesDataStore(name = "settings")

  • @mehranj73
    @mehranj73 3 роки тому +8

    I like these short videos.

  • @ajaydeepak9739
    @ajaydeepak9739 3 роки тому

    thanks another awesome course

  • @KotlinBek
    @KotlinBek 2 роки тому

    Hello, Philipp Lacner
    I got question, if you could answer it that would be very helpful.
    so, in new API version there would be changes and some codes might be deprecated as you mentioned, but when we are developing new app we must make sure the app should run on older Android versions, so if we use latest technology(code), would it run on older APIs.
    even though when code deprecated it still works. right? both on older and latest APIs

  • @CoderzF1
    @CoderzF1 2 роки тому +5

    Hello, I was a bit confused..... the function createDataStore has been removed as of the Stable release of DataStore.

  • @swatiomar8603
    @swatiomar8603 3 роки тому

    Awesome mentor 🙏

  • @krishnanath.v922
    @krishnanath.v922 3 роки тому

    Hey @philip the save and read are async so before reading we should ensure that save is finished right.?

  • @GrumpyOldMan9
    @GrumpyOldMan9 2 роки тому +2

    How do you store objects (like with JSON in SharedPreferences)?

  • @Another0neTime
    @Another0neTime 3 роки тому

    Another great video!

  • @jam4l
    @jam4l 2 роки тому

    Thanks for the good video, in a bit large project don't we need to create datastore as a Singltone object ?

  • @salmaK20012
    @salmaK20012 Рік тому

    What if we want to read from the data store on a settings screen without providing default values for the switches (I want the switches to be on as soon as the screen comes up, but if I set the stateFlow to lateinit, I will get an error because by the time View model is created, the coroutine hasn't finished executing yet)?

  • @kodeHubb
    @kodeHubb 3 роки тому +1

    Thanks a lot for this video.

  • @vedprakash9099
    @vedprakash9099 3 роки тому +1

    Hey in new library I am not able to import
    preferencesKey
    with this version
    implementation "androidx.datastore:datastore-preferences-core:1.0.0-alpha06"

  • @MisterWealth
    @MisterWealth 2 роки тому

    I want to make a questionnaire styled app. Where there are lets say 5 multiple choice questions. And depending what choice it itll be different prices of something. So like a very basic bare bones version of a shopping cart.
    Would this be the method to go with?
    I have a photography business and I want to add up everything at the end and display it to the user.

  • @macheeneraid230
    @macheeneraid230 3 роки тому +1

    how about datastore in livedata(viewmodel)
    i already created my own version though i'm not sure if that is correct.

  • @lucianrekkless418
    @lucianrekkless418 3 роки тому +3

    Thanks a lot man! As always very clear and constructed tutorial. Can you also create a video about using dataStore in Java for login session (storing user acount details)?

  • @scanskynero3083
    @scanskynero3083 Рік тому

    Thanks for this! The official CodeLab was way too complicated for me to follow

  • @lokkeshss7024
    @lokkeshss7024 3 роки тому

    @Philipp Lackner Could we get something on MediaStore API, like how retrieve all photos on an Android device and plug it into a ML Recognition service.

  • @mikelantzelo
    @mikelantzelo 3 роки тому

    Hi and thanks for the great videos you share with us. I have a problem using Datastore.. everything works perfect until trying to open fragment for second time. Then i get error
    There are multiple DataStores active for the same file: ..... You should either maintain your DataStore as a singleton or confirm that there is no two DataStore's active on the same file (by confirming that the scope is cancelled). Stucked and don't know what to do to fix this... Can you give a little help?

  • @dreamer6228751
    @dreamer6228751 3 роки тому

    Very interested video!

  • @AlgeriaHere
    @AlgeriaHere 3 роки тому

    Helpful video , thank you so much , but there is also prototypes , are you making any videos about that ?

  • @KunalGoyal
    @KunalGoyal 3 місяці тому

    Please make an updated video on shared preferences for complex tasks

  • @heshamabdo6024
    @heshamabdo6024 Рік тому

    Thank you man

  • @saranyagovindan8423
    @saranyagovindan8423 3 роки тому

    Hi, do you have any videos for networking and database caching

  • @chiragpatel6410
    @chiragpatel6410 3 роки тому +7

    Nice video. I have question how to remove value of the specific key or how to clear whole datastore value like we used to do in shared preference by calling clear()

    • @KaiqueOcanha
      @KaiqueOcanha 2 роки тому

      And to remove a spceific key only, use
      val dataStoreKey = preferencesKey(key)
      dataStore.edit{
      it.remove(dataStoreKey)
      }

  • @bboydarknesz
    @bboydarknesz 3 роки тому

    Wow thanks..
    I need help..
    I have User model, and want it to save in DataStore with data type as User. So when I read DataStore, I get User data. Any efficient idea how to do it? Thank you

  • @Android-gc9nu
    @Android-gc9nu 3 роки тому

    How to retrieve data from DataStore preference to using in OkHttp Interceptor with Dagger Hilt?

  • @MonichGPT
    @MonichGPT 3 роки тому

    How is you update UI from background launch???

  • @jcddcjjcdnz
    @jcddcjjcdnz 2 роки тому +11

    The old sharedpreferences is deprecated not the androidx version. Don't go down this DataStore track if you are still planning to use the Preferences screens because they are not compatible, no one mentions this. In the docs, sharedpreferences are still recommended for its traditional use case and has the advantage many advantages.

    • @un-ro
      @un-ro 2 роки тому

      Well, I am also confused with deprecated statement. There are no even article or something related to migrate preference screen to datastore.

  • @sleepydev4700
    @sleepydev4700 3 роки тому

    How can I use it in settings fragment?

  • @pradeepkumarreddykondreddy7048
    @pradeepkumarreddykondreddy7048 2 роки тому

    What is the secure way to store JWT token on android ?

  • @mojeebhasan5283
    @mojeebhasan5283 3 роки тому

    Dear , My question is reading data from datastore using lifecycleScope is safe. It may causes ANR(Application not responding). Pls make video on how ANR occur on fetching data from datastore

  • @arcticmax20
    @arcticmax20 3 роки тому

    Thanks :D

  • @glory9079
    @glory9079 3 роки тому

    I listened we can save class of arrayList before
    Can I !?

  • @sudhanshusharma9159
    @sudhanshusharma9159 3 роки тому

    wow video. Please make video on video streaming and custom view.

  • @surflaweb
    @surflaweb 2 роки тому

    Thanks

  • @rezadev5388
    @rezadev5388 2 роки тому

    hello
    please make it possible to pay in digital currency to purchase courses.

  • @Sc2MooDy
    @Sc2MooDy 3 роки тому

    thanks you

  • @ajaygalagali5963
    @ajaygalagali5963 3 роки тому

    Thanks :)

  • @javanull262
    @javanull262 3 роки тому +1

    Thanks. Please make a video about MVI architecture. Can't find good explanation of that with a simple example :(

    • @rahulghag4014
      @rahulghag4014 3 роки тому

      ua-cam.com/video/8vAQrgbh6YM/v-deo.html

  • @rma1563
    @rma1563 3 роки тому

    Thanks. It was very clear. But can we save Lists/Arrays via Preference DataStore?

    • @PhilippLackner
      @PhilippLackner  3 роки тому +3

      you could, but you better use a database for that

  • @danielwaiguru4359
    @danielwaiguru4359 3 роки тому

    Hey philipp when using a fragment with viewBinding do you really need to set it to null in onDestroy callback?

    • @prasanthmanimaran5158
      @prasanthmanimaran5158 3 роки тому

      Yeah it seems. To prevent memory leaks, I believe so.

    • @haykmkrtchyan7093
      @haykmkrtchyan7093 3 роки тому +1

      Actually in activity you don't need to set it to null. This is for fragments.

    • @prasanthmanimaran5158
      @prasanthmanimaran5158 3 роки тому +1

      @@haykmkrtchyan7093 Ahh sorry, I actually meant for fragments too. Didn't realize the "activity" there. Thanks btw 😁

    • @haykmkrtchyan7093
      @haykmkrtchyan7093 3 роки тому

      @@prasanthmanimaran5158 Welcome 😁

    • @danielwaiguru4359
      @danielwaiguru4359 3 роки тому

      @@haykmkrtchyan7093 yeah sure

  • @himanshubansal2189
    @himanshubansal2189 3 роки тому

    dhanyawaad chacha

  • @ProjectAryawarta
    @ProjectAryawarta Рік тому

    How to secure this?

  • @codewithpreeti4083
    @codewithpreeti4083 3 роки тому

    Nice video., I have a question,.how to return a value from lifecyclescope.launch . This value we will get inside this launch and I want to return this in another function.

    • @PhilippLackner
      @PhilippLackner  3 роки тому +1

      use async instead of launch. Then you get the value with .await()

    • @codewithpreeti4083
      @codewithpreeti4083 3 роки тому

      @@PhilippLackner okay. Thanks. Any code snippet do you have for this ? It will be helpful. Actually I tried that didn't work..

  • @xD-saleem
    @xD-saleem 3 роки тому

    still using SharedPreferences :( but since this video is uploaded will switch to dataStore with DI :)

  • @johnybaby9574
    @johnybaby9574 3 роки тому +1

    wow didn't know sharedpreferences going to be deprecated

  • @MrRahulmalik
    @MrRahulmalik 3 роки тому

    Shouldn't we specify IO Dispatchers?

    • @PhilippLackner
      @PhilippLackner  3 роки тому +3

      datastore switches to IO dispatcher behind the scenes

  • @kifkifa56
    @kifkifa56 3 роки тому

    Good tut , and Friday is not black its white.

  • @4everdefence
    @4everdefence 7 місяців тому

    To anyone watching this video and wishing to add Preferences DataStore to your application. Please note that you should add exception handling before releasing this code into production. The code in this video is not production ready and should be treated accordingly

  • @abdullateef30
    @abdullateef30 9 днів тому

    You had beard? 😂😂😂

  • @codersaurabh
    @codersaurabh Рік тому +1

    its 2023 i dont know sharedpref were deprecated

  • @mehulbisht9708
    @mehulbisht9708 3 роки тому +1

    If you think he's clickbaiting by writing "deprecated", don't forget that once he deprecated his channel name as well. 😂😂

  • @narendragupta3204
    @narendragupta3204 3 роки тому

    Hii can u make the video on how to pass data in nested graph in fragments .
    Let's say Graph1 has fragment A,B,C,D
    Fragment B contain a graph having fragment P,Q,R,S.
    So I need to pass model from fragment B to any fragment P,Q,R,S
    As per needs
    Plz give me solutions thanks

  • @magpro8775
    @magpro8775 Рік тому

    save shared pref to database ? hahahah
    why i need shared pref if saved user info to database

  • @BearkFearGamer
    @BearkFearGamer 2 роки тому

    Way not simple? Complicated Android remaking the road. createDataStore not isn't found for me.

  • @antoniokomangyudistira4150
    @antoniokomangyudistira4150 3 роки тому

    6.6 min with 1.5 time speed 😝

  • @VictorFarkas-fp2gl
    @VictorFarkas-fp2gl Рік тому

    nice smart video 🦥