Check Mobile App
Read now
Start a Project

SharedPreference.Editor commit() vs apply()

Save

I know its quiet old now but there is still some doubts about the apply() function of the SharedPreference.Editor. Many of the people still don’t understand the difference between the two and why was there a need to create another method while there was already commit().

Editor’s apply() was introduced in API Level 9 while commit() was from the starting i.e API Level 1. Actually its quiet simple the difference is that apply() is asynchronous while commit is synchronous. So what is Asynchronous and Synchronous?

When you execute something synchronously, you wait for it to finish before moving on to another task. When you execute something asynchronously, you can move on to another task before it finishes. So that it doesn’t block the code execution, hence fast.So how is commit() synchronous and apply() not?

Basically commit() writes the changed SharedPreference value out to persistent storage immediately, on the other hand, apply() write the changes to the in-memory SharedPreference immediately and starts an asynchronous commit to disk. That is why in case of apply() you will not get notified of the failure or success of your changes like in commit() which returns you the status of your changes. But I guess many of us never really bothered what its returning , but if you do so for you commit() is still there and hence not deprecated. Even if you call a commit() after apply(), its safe because all the commit calls will be blocked until the apply()’s commit and the commit()’s commit (you called after apply()) is done.

So the conclusion is that apply() is completely safe. You can use it without worry as you will get updated value of preferences. But if you want a success or failure response do go for commit(). The use differs from person to person and for different requirements.

. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


1 comments

  • Hitesh
    Thanks for the clarification
  • css.php

    Very good company, we did get app extension for Magento 2 website. The support was very good they help us through the process. Webkul team is very supportive, I would recommend them.

    Yasser Mohamed

    Yasser Mohamed

    Talk to Sales

    Global

    Live Chat
    Start a Project

      Message Sent!

      If you have more details or questions, you can reply to the received confirmation email.

      Back to Home