Попытка запустить функцию ежедневно - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь отображать тост каждую минуту, даже если мое приложение убито, при условии, что пользователь проверяет определенный переключатель в моем приложении. Я сохранил значение переключателя, используя SharedPreferences. Я не знаю, как вызвать службу условно, и мой код до сих пор выдает ошибку «Не удается создать обработчик внутри потока, который не вызвал Looper.prepare ()».

MyService.xml:

public class MyService extends GcmTaskService {
    @Override
    public int onRunTask(TaskParams taskParams) {
        Toast.makeText(this, "Periodic one eh", Toast.LENGTH_SHORT).show();
        return 0;
    }
}

SettingsActivity.java (переключатели ручек):

    public class SettingsActivity extends AppCompatActivity {
    public static final String PREFS_NAME = "MyPrefsFile";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_page);
        Switch auto = findViewById(R.id.auto);

        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

        int width = displayMetrics.widthPixels;
        int height = displayMetrics.heightPixels;

        getWindow().setLayout((int) (width * 0.9), (int) (height * 0.8));

        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        boolean silent = settings.getBoolean("switchKey", false);
        auto.setChecked(silent);

        auto.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

            public void onCheckedChanged(CompoundButton buttonView,
                                         boolean isChecked) {

                SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                SharedPreferences.Editor editor = settings.edit();
                editor.putBoolean("switchKey", isChecked);
                editor.commit();
            }

        });

        handler();

    }

    public void handler() {
        SharedPreferences shared = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
        Boolean channel = (shared.getBoolean("switchKey", false));
        String tag = "periodic";

        GcmNetworkManager mScheduler = GcmNetworkManager.getInstance(getApplicationContext());

        long periodSecs = 10L;// 1 minute

        PeriodicTask periodic = new PeriodicTask.Builder()
                .setService(BackgroundWallpaperSetter.class)
                .setPeriod(periodSecs)
                .setTag(tag)
                .setPersisted(true)
//                .setUpdateCurrent(true).setRequiredNetwork(com.google.android.gms.gcm.Task.NETWORK_STATE_CONNECTED)
                .build();
        mScheduler.schedule(periodic);
    }
}

Пожалуйста, помогите. :)

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