Best approaches to refresh data periodically in Android












1















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



























    1















    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

























      1












      1








      1








      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 '18 at 21:42









      voximdovoximdo

      469




      469
























          2 Answers
          2






          active

          oldest

          votes


















          0














          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































            0














            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',
              autoActivateHeartbeat: false,
              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









              0














              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




























                0














                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


























                  0












                  0








                  0







                  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 '18 at 21:46









                  Dash2TheDotDash2TheDot

                  63




                  63

























                      0














                      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




























                        0














                        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


























                          0












                          0








                          0







                          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 '18 at 1:08









                          Vladimir GladunVladimir Gladun

                          1788




                          1788






























                              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.




                              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

                              Create new schema in PostgreSQL using DBeaver

                              Deepest pit of an array with Javascript: test on Codility

                              Costa Masnaga