Как правильно настроить CountDownTimer для запуска onDestroy ()? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь создать таймер, который будет запускаться в фоновом режиме после запуска onDestroy(), а когда таймер достигнет 6 часов, SharedPreferences будет использоваться для внесения изменений в приложение.

Мне было интересно ... как правильно настроить CountDownTimer или что-то подобное для onDestroy().

Я отвечу на все вопросы, если это необходимо.Спасибо.

1 Ответ

0 голосов
/ 17 сентября 2018

Примерно через неделю пришел рабочий ответ. Этот ответ включает в себя то, что связано с тем, как запустить службу. В этом сценарии я создаю сервис CountDownTimer.

AndroidManifest.xml

<service android:name=".TimeService"/>

MainActivity.java

import android.content.Intent;
import android.support.v4.content.ContextCompat;

public class MainActivity extends AppCompatActivity {
       Intent i;

       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           i = new Intent(this, TimeService.class);

           stopService(i); //To stop the service the next time the app is launched.
       }

       @Override
       protected void onDestroy() {
           launchService(); //Launches the service once when app shuts down.
           super.onDestroy();
       }

       public void launchService() { //How to launch the service, depending the phone's API.
            if(Build.VERSION.SDK_INT >= 26) {
                 startForegroundService(new Intent(this, TimeService.class));
            }
            else{
                Intent i;
                i = new Intent(this, TimeService.class);
                ContextCompat.startForegroundService(this, i);
            }
       }
}

TimeService.java

import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.CountDownTimer;
import android.os.IBinder;
import android.support.annotation.Nullable;

public class TimeService extends Service {

   CountDownTimer cdt = null;
   private SharedPreferences pref;
   //Things you want SharedPreferences to change.
   Intent i;

   @Override
   public void onCreate() {
       i = new Intent(this, TimeService.class);
       startService(i);
       pref = this.getSharedPreferences("myAppPref", MODE_PRIVATE);
       cdt = new CountDownTimer(3600000, 1000) { //One hour timer with one second interval.

           @Override
           public void onTick(long millisUntilFinished) {

           }

           @Override
           public void onFinish() {
                //Whatever you need SharedPreferences to change here.
           }
       };
       cdt.start();
   }

   @Nullable
   @Override
   public IBinder onBind(Intent intent) {
       return null;
   }
}
...