Я хотел запустить сервис для минимальной работы, как только мое приложение закрывается - PullRequest
0 голосов
/ 03 мая 2019

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

Я получаю журнал внутри метода onActivityDestroyed, что означает, что он вызывается при уничтожении приложения, но дальнейший код невыполнение или не разрешено, я думаю.

Код класса, который вызывает намерение класса обслуживания.

public class AppKilledDetectService implements Application.ActivityLifecycleCallbacks {

    private static final String TAG = AppKilledDetectService.class.getSimpleName();
    private static AppKilledDetectService instance;
    private OneTimeWorkRequest uploadWorkRequest;

    public static AppKilledDetectService init(Application application) {
        if (instance == null) {
            instance = new AppKilledDetectService();
            application.registerActivityLifecycleCallbacks(instance);
        }
        return instance;
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        uploadWorkRequest = new OneTimeWorkRequest.Builder(PostDataService.class)
                .build();
    }

    @Override
    public void onActivityStarted(Activity activity) {

    }

    @Override
    public void onActivityResumed(Activity activity) {
        Log.e(TAG, "onActivityResumed");
    }

    @Override
    public void onActivityPaused(Activity activity) {
        Log.e(TAG, "onPause");
    }

    @Override
    public void onActivityStopped(Activity activity) {
        Log.e(TAG, "onActivityStopped");
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        Log.e(TAG, "onActivityDestroyed");

        // WorkManager.getInstance().enqueue(uploadWorkRequest);

        Intent i = new Intent(activity, PostDataService.class);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            activity.startForegroundService(i);
        } else
            activity.startService(i);
    }
}

Я пробовал службу, IntentService и рабочий класс, ничего не вызывается.

Вы должны увидеть именно эту часть кода в вышеприведенном классе, заранее спасибо

@Override
public void onActivityDestroyed(Activity activity) {
    Log.e(TAG, "onActivityDestroyed");

    // WorkManager.getInstance().enqueue(uploadWorkRequest);

    Intent i = new Intent(activity, PostDataService.class);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
        activity.startForegroundService(i);
    else
        activity.startService(i);
}
...