Sobes.tech
Middle+

Jak stworzyć własny WorkManager w Android?

sobes.tech AI

Odpowiedź od AI

  1. Utwórz Configuration:

    Configuration myConfig = new Configuration.Builder()
        .setMinimumLoggingLevel(android.util.Log.DEBUG)
        // dodaj inne ustawienia
        .build();
    
  2. Zaimplementuj Configuration.Provider w swojej klasie Application:

    import androidx.work.Configuration;
    import androidx.work.WorkManager;
    
    public class MyApp extends Application implements Configuration.Provider {
    
        @Override
        public Configuration getWorkManagerConfiguration() {
            return new Configuration.Builder()
                .setMinimumLoggingLevel(android.util.Log.DEBUG)
                // Skonfiguruj Executor, jeśli to konieczne
                // .setExecutor( Executors.newFixedThreadPool(8))
                .build();
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            // Inicjalizacja WorkManager nastąpi automatycznie przy pierwszym użyciu
            // lub przy wywołaniu WorkManager.getInstance(this)
        }
    }
    
  3. Wskaż swoją klasę Application w manifeście:

    <application
        android:name=".MyApp"
        ... >
        </application>
    

Teraz WorkManager będzie używał Twojej niestandardowej konfiguracji podczas inicjalizacji.

Alternatywa (dla pełniejszej kontroli nad inicjalizacją):

  1. Zaimplementuj Configuration.Provider w osobnej klasie, która nie jest Application.

  2. W swojej klasie Application nadpisz metodę onCreate() i ręcznie wywołaj WorkManager.initialize():

    import androidx.work.Configuration;
    import androidx.work.WorkManager;
    
    public class MyApp extends Application {
    
        @Override
        public void onCreate() {
            super.onCreate();
            WorkManager.initialize(this, new Configuration.Builder()
                .setMinimumLoggingLevel(android.util.Log.DEBUG)
                // inne ustawienia
                .build());
        }
    }
    

Ten sposób nie jest zalecany, jeśli po prostu zmieniasz opcje domyślne. Configuration.Provider jest prostszą i bardziej poprawną implementacją dla większości przypadków.