Есть ли способ выполнить пустоту только один раз в определенное время? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть действие с просмотром переработчика, и я хочу, чтобы в этом обзоре каждый раз отображались разные элементы списка. Это работает, но я хочу, чтобы это запускалось только один раз (в определенный час, например, 00: 00h) и не запускалось снова каждый раз, когда я вхожу в действие, все пустоты, которые случайным образом решают, какой элемент показывать в обзоре переработчика.

Вот код:

public class Comida2 extends AppCompatActivity implements Adaptador2.OnRecipeListener {
    private RecyclerView recyclerView1;
    List<Entidad2> listItems;
    Adaptador2 adaptor;
    private Entidad2 entidad1,entidad2,entidad3;
    Button cambiarmenu;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_comida);

        cambiarmenu = (Button) findViewById(R.id.boton_cambiarmenu);

        recyclerView1 = findViewById(R.id.lv_1);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

        recyclerView1.setLayoutManager(layoutManager);

        listItems = new ArrayList<>();
        entidad1 = new Entidad2(R.drawable.calabacines_3, "Solomillo a la plancha", " 10 min.", 4, 20);
        entidad2 = new Entidad2(R.drawable.patatas_deluxe_especiadas_70523_300_150, "Entrecot", " 15 min.", 2, 50);
        entidad3 = new Entidad2(R.drawable.tomate, "Hamburguesa", " 2 min.", 5, 100);


        listItems.add(entidad1);
        listItems.add(entidad2);
        listItems.add(entidad3);

        adaptor = new Adaptador2(listItems, this);
        recyclerView1.setAdapter(adaptor);
        adaptor.notifyDataSetChanged();
    }


    @Override
    public void OnRecipe(int priority) {

        if (priority == 20) {
            Intent in = new Intent(this, Solomillo.class);
            startActivity(in);
        }
        if (priority == 50) {
            Intent in = new Intent(this, Entrecot.class);
            startActivity(in);
        }
        if (priority == 100) {
            Intent in = new Intent(this, Hamburguesa.class);
            startActivity(in);
        }
    }

    public void pickEntidad(){
        final int random = new Random().nextInt(101);

        int priority1 = entidad1.getPriority();
        int priority2 = entidad2.getPriority();
        int priority3 = entidad3.getPriority();


        listItems.clear();
        if(random < priority1){

            listItems.add(entidad1);

        }else if(random < priority2){

            listItems.add(entidad2);

        }else if (random <= priority3){

            listItems.add(entidad3);

        }
        adaptor.notifyDataSetChanged();
    }
}

Я просматривал некоторые другие посты, но проблема в том, что я хочу, чтобы весь этот процесс запускался один раз, когда я впервые захожу в приложение, а затем я закрыл приложение После этого зайдите в приложение и все равно не запустите void. Но он должен работать в определенный час, например, 00: 00h.

Кроме того, я хотел бы добавить кнопку для другой активности, которая может запустить аннулировать в этом действии и, следовательно, изменить то, что случайно показывается в обзоре переработчика.

1 Ответ

0 голосов
/ 06 апреля 2020

Используйте WorkManager и запланируйте выполнение задания каждую ночь в 0:00. Пусть он выберет предметы для показа и запишет их в файл. Затем, когда ваше задание будет выполнено, попросите его прочитать этот файл и отобразить эти элементы.

Для кнопки в задании удалите файл. Выполните код операции RecyclerView, чтобы сгенерировать сам файл, если его нет для начала (с отображением экрана загрузки при необходимости в начале).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...