Preferences DataStore in 10min (SharedPreferences deprecated)

Поделиться
HTML-код
  • Опубликовано: 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

Комментарии • 110

  • @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 11 месяцев назад

      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

  • @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

  • @gauravthakkar802
    @gauravthakkar802 3 года назад

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

  • @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)

  • @kumarshubham2812
    @kumarshubham2812 3 года назад +21

    plz make a playlist on jetpack architecture components!!!

  • @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. 😊

  • @vishnusatheesh5633
    @vishnusatheesh5633 Год назад

    Thanks man 👍🏻
    You're a gem 💎

  • @mehranj73
    @mehranj73 3 года назад +8

    I like these short videos.

  • @danyelsh874
    @danyelsh874 2 года назад

    you're the best philipp

  • @techmarinar
    @techmarinar 2 года назад

    Thanx man this was very helpful 😊

  • @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

  • @ajaydeepak9739
    @ajaydeepak9739 3 года назад

    thanks another awesome course

  • @swatiomar8603
    @swatiomar8603 3 года назад

    Awesome mentor 🙏

  • @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")

  • @Another0neTime
    @Another0neTime 3 года назад

    Another great video!

  • @CoderzF1
    @CoderzF1 2 года назад +5

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

  • @scanskynero3083
    @scanskynero3083 11 месяцев назад

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

  • @jam4l
    @jam4l 2 года назад

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

  • @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

  • @kodeHubb
    @kodeHubb 3 года назад +1

    Thanks a lot for this video.

  • @krishnanath.v922
    @krishnanath.v922 3 года назад

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

  • @AlgeriaHere
    @AlgeriaHere 3 года назад

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

  • @dreamer6228751
    @dreamer6228751 3 года назад

    Very interested video!

  • @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)?

  • @heshamabdo6024
    @heshamabdo6024 Год назад

    Thank you man

  • @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.

  • @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)?

  • @KunalGoyal
    @KunalGoyal 3 месяца назад

    Please make an updated video on shared preferences for complex tasks

  • @GrumpyOldMan9
    @GrumpyOldMan9 2 года назад +2

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

  • @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.

  • @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"

  • @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.

  • @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?

  • @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)
      }

  • @arcticmax20
    @arcticmax20 3 года назад

    Thanks :D

  • @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.

  • @sudhanshusharma9159
    @sudhanshusharma9159 3 года назад

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

  • @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

  • @saranyagovindan8423
    @saranyagovindan8423 3 года назад

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

  • @surflaweb
    @surflaweb Год назад

    Thanks

  • @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???

  • @Sc2MooDy
    @Sc2MooDy 3 года назад

    thanks you

  • @pradeepkumarreddykondreddy7048
    @pradeepkumarreddykondreddy7048 2 года назад

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

  • @sleepydev4700
    @sleepydev4700 3 года назад

    How can I use it in settings fragment?

  • @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

  • @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

  • @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

  • @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 2 года назад

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

    • @haykmkrtchyan7093
      @haykmkrtchyan7093 2 года назад +1

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

    • @prasanthmanimaran5158
      @prasanthmanimaran5158 2 года назад +1

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

    • @haykmkrtchyan7093
      @haykmkrtchyan7093 2 года назад

      @@prasanthmanimaran5158 Welcome 😁

    • @danielwaiguru4359
      @danielwaiguru4359 2 года назад

      @@haykmkrtchyan7093 yeah sure

  • @glory9079
    @glory9079 3 года назад

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

  • @ajaygalagali5963
    @ajaygalagali5963 3 года назад

    Thanks :)

  • @rezadev5388
    @rezadev5388 2 года назад

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

  • @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 года назад

      ruclips.net/video/8vAQrgbh6YM/видео.html

  • @himanshubansal2189
    @himanshubansal2189 3 года назад

    dhanyawaad chacha

  • @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

  • @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..

  • @kifkifa56
    @kifkifa56 3 года назад

    Good tut , and Friday is not black its white.

  • @MrRahulmalik
    @MrRahulmalik 3 года назад

    Shouldn't we specify IO Dispatchers?

    • @PhilippLackner
      @PhilippLackner  3 года назад +3

      datastore switches to IO dispatcher behind the scenes

  • @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. 😂😂

  • @codersaurabh
    @codersaurabh Год назад +1

    its 2023 i dont know sharedpref were deprecated

  • @BearkFearGamer
    @BearkFearGamer 2 года назад

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

  • @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

  • @antoniokomangyudistira4150
    @antoniokomangyudistira4150 3 года назад

    6.6 min with 1.5 time speed 😝

  • @magpro8775
    @magpro8775 Год назад

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

  • @VictorFarkas-fp2gl
    @VictorFarkas-fp2gl Год назад

    nice smart video 🦥