Я могу обнаружить уничтожение приложения (из последнего стека приложений), и я пытаюсь запустить службу в методе 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);
}