Best approaches to refresh data periodically in Android











up vote
1
down vote

favorite












I have two cases in which I need to update data from webserver using API in background. To obtain data on request I use okHttp and Kotlin courtines. And now I am wondering which approaches are the best, when:




  1. I have listview with data from webserver, and I want to update it, let's say every 10 secs, when application is in that certain view. (I was thinking about using for ex. handler with runnable)

  2. I want to display notification when some data will change in some certain way. In that case I think that I should use background service?


With regards,










share|improve this question


























    up vote
    1
    down vote

    favorite












    I have two cases in which I need to update data from webserver using API in background. To obtain data on request I use okHttp and Kotlin courtines. And now I am wondering which approaches are the best, when:




    1. I have listview with data from webserver, and I want to update it, let's say every 10 secs, when application is in that certain view. (I was thinking about using for ex. handler with runnable)

    2. I want to display notification when some data will change in some certain way. In that case I think that I should use background service?


    With regards,










    share|improve this question
























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      I have two cases in which I need to update data from webserver using API in background. To obtain data on request I use okHttp and Kotlin courtines. And now I am wondering which approaches are the best, when:




      1. I have listview with data from webserver, and I want to update it, let's say every 10 secs, when application is in that certain view. (I was thinking about using for ex. handler with runnable)

      2. I want to display notification when some data will change in some certain way. In that case I think that I should use background service?


      With regards,










      share|improve this question













      I have two cases in which I need to update data from webserver using API in background. To obtain data on request I use okHttp and Kotlin courtines. And now I am wondering which approaches are the best, when:




      1. I have listview with data from webserver, and I want to update it, let's say every 10 secs, when application is in that certain view. (I was thinking about using for ex. handler with runnable)

      2. I want to display notification when some data will change in some certain way. In that case I think that I should use background service?


      With regards,







      android kotlin






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 21 at 21:42









      voximdo

      468




      468
























          2 Answers
          2






          active

          oldest

          votes

















          up vote
          0
          down vote













          You might be looking for services: https://developer.android.com/reference/android/app/Service



          You can think of these like background processes (they're a bit different, though) These run in the background and interact with other Android components like notification manager (https://developer.android.com/reference/android/app/NotificationManager).



          So, essentially, you'll want to create a service to check the API every minute or so, then add a notification to the manager.






          share|improve this answer




























            up vote
            0
            down vote













            IMHO the best approach is to build for offline: store your result in the persistent store (i.e. Room). Subscribe on the query result for your feature. Then you can use the new JetPack's WorkManager for the regular updates ( https://developer.android.com/topic/libraries/architecture/workmanager/ ). Here is the slightly modified code snippet from the documentation:



            val dataCheckBuilder =
            PeriodicWorkRequestBuilder<DataCheckWorker>(10, TimeUnit.SECONDS)
            // ...if you want, you can apply constraints to the builder here...

            // Create the actual work object:
            val dataCheckWork = dataCheckBuilder.build()
            // Then enqueue the recurring task:
            WorkManager.getInstance().enqueue(dataCheckWork)





            share|improve this answer





















              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53420859%2fbest-approaches-to-refresh-data-periodically-in-android%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              0
              down vote













              You might be looking for services: https://developer.android.com/reference/android/app/Service



              You can think of these like background processes (they're a bit different, though) These run in the background and interact with other Android components like notification manager (https://developer.android.com/reference/android/app/NotificationManager).



              So, essentially, you'll want to create a service to check the API every minute or so, then add a notification to the manager.






              share|improve this answer

























                up vote
                0
                down vote













                You might be looking for services: https://developer.android.com/reference/android/app/Service



                You can think of these like background processes (they're a bit different, though) These run in the background and interact with other Android components like notification manager (https://developer.android.com/reference/android/app/NotificationManager).



                So, essentially, you'll want to create a service to check the API every minute or so, then add a notification to the manager.






                share|improve this answer























                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  You might be looking for services: https://developer.android.com/reference/android/app/Service



                  You can think of these like background processes (they're a bit different, though) These run in the background and interact with other Android components like notification manager (https://developer.android.com/reference/android/app/NotificationManager).



                  So, essentially, you'll want to create a service to check the API every minute or so, then add a notification to the manager.






                  share|improve this answer












                  You might be looking for services: https://developer.android.com/reference/android/app/Service



                  You can think of these like background processes (they're a bit different, though) These run in the background and interact with other Android components like notification manager (https://developer.android.com/reference/android/app/NotificationManager).



                  So, essentially, you'll want to create a service to check the API every minute or so, then add a notification to the manager.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 21 at 21:46









                  Dash2TheDot

                  63




                  63
























                      up vote
                      0
                      down vote













                      IMHO the best approach is to build for offline: store your result in the persistent store (i.e. Room). Subscribe on the query result for your feature. Then you can use the new JetPack's WorkManager for the regular updates ( https://developer.android.com/topic/libraries/architecture/workmanager/ ). Here is the slightly modified code snippet from the documentation:



                      val dataCheckBuilder =
                      PeriodicWorkRequestBuilder<DataCheckWorker>(10, TimeUnit.SECONDS)
                      // ...if you want, you can apply constraints to the builder here...

                      // Create the actual work object:
                      val dataCheckWork = dataCheckBuilder.build()
                      // Then enqueue the recurring task:
                      WorkManager.getInstance().enqueue(dataCheckWork)





                      share|improve this answer

























                        up vote
                        0
                        down vote













                        IMHO the best approach is to build for offline: store your result in the persistent store (i.e. Room). Subscribe on the query result for your feature. Then you can use the new JetPack's WorkManager for the regular updates ( https://developer.android.com/topic/libraries/architecture/workmanager/ ). Here is the slightly modified code snippet from the documentation:



                        val dataCheckBuilder =
                        PeriodicWorkRequestBuilder<DataCheckWorker>(10, TimeUnit.SECONDS)
                        // ...if you want, you can apply constraints to the builder here...

                        // Create the actual work object:
                        val dataCheckWork = dataCheckBuilder.build()
                        // Then enqueue the recurring task:
                        WorkManager.getInstance().enqueue(dataCheckWork)





                        share|improve this answer























                          up vote
                          0
                          down vote










                          up vote
                          0
                          down vote









                          IMHO the best approach is to build for offline: store your result in the persistent store (i.e. Room). Subscribe on the query result for your feature. Then you can use the new JetPack's WorkManager for the regular updates ( https://developer.android.com/topic/libraries/architecture/workmanager/ ). Here is the slightly modified code snippet from the documentation:



                          val dataCheckBuilder =
                          PeriodicWorkRequestBuilder<DataCheckWorker>(10, TimeUnit.SECONDS)
                          // ...if you want, you can apply constraints to the builder here...

                          // Create the actual work object:
                          val dataCheckWork = dataCheckBuilder.build()
                          // Then enqueue the recurring task:
                          WorkManager.getInstance().enqueue(dataCheckWork)





                          share|improve this answer












                          IMHO the best approach is to build for offline: store your result in the persistent store (i.e. Room). Subscribe on the query result for your feature. Then you can use the new JetPack's WorkManager for the regular updates ( https://developer.android.com/topic/libraries/architecture/workmanager/ ). Here is the slightly modified code snippet from the documentation:



                          val dataCheckBuilder =
                          PeriodicWorkRequestBuilder<DataCheckWorker>(10, TimeUnit.SECONDS)
                          // ...if you want, you can apply constraints to the builder here...

                          // Create the actual work object:
                          val dataCheckWork = dataCheckBuilder.build()
                          // Then enqueue the recurring task:
                          WorkManager.getInstance().enqueue(dataCheckWork)






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Nov 22 at 1:08









                          Vladimir Gladun

                          1688




                          1688






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.





                              Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                              Please pay close attention to the following guidance:


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53420859%2fbest-approaches-to-refresh-data-periodically-in-android%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Contact image not getting when fetch all contact list from iPhone by CNContact

                              count number of partitions of a set with n elements into k subsets

                              A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks