Как получить время изменения трансляции, даже если приложение закрыто

у меня есть приложение, и это важно для меня, чтобы обнаружить изменения во времени. до сих пор у меня есть приемник с соответствующими фильтрами намерения, как это:

<receiver
  android_name=".MyReceiver"
  android_enabled="true"
  android_exported="true">
  <intent-filter>
    <action android_name="android.intent.action.TIME_SET" />
    <action android_name="android.intent.action.ACTION_TIME_CHANGED" />
    <action android_name="android.intent.action.DATE_CHANGED" />
  </intent-filter>
</receiver>

и это мой приемник :

public class MyReceiver extends BroadcastReceiver {
    public MyReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        SharedPreferences.Editor spe =PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()).edit();
        spe.putLong("UFCount", 1));
        spe.putLong("FCount", 1));
        spe.commit();
        Toast.makeText(context.getApplicationContext(), "Your job is being done!!", Toast.LENGTH_LONG).show();
    }
}

этот приемник работает только тогда, когда приложение открытов фоновом режиме . как сделать так, чтобы этот приемник работал, даже если приложение закрыто?

1 ответ

  1. Так как приложение закрыто, нет пользовательского интерфейса (т. е. нет действия) для отображения тостов. На этом этапе в Logcat должно быть исключение. Вы также можете добавить трассировку logcat перед отображением тоста, как Log.d("MyReceiver", "in onCreate()");и вы должны увидеть его, даже когда приложение закрыто.

    Вместо отображения тостов можно, например, отправить локальное уведомление, которое разрешено, поскольку не требует действий из приложения.