Android 为什么最近的应用程序在删除后服务不在后台运行

Android 为什么最近的应用程序在删除后服务不在后台运行,android,android-background,android-backup-service,Android,Android Background,Android Backup Service,从后台删除我的应用程序或从最近的应用程序删除时,为什么我的服务未在后台运行 我非常混淆IntentService和Service,我应该选择哪一种 我正在制作一个应用程序,我将阅读所有的通话记录细节,并将发送自动短信,因此我需要运行后台服务 但问题是,当我运行这个应用程序时,它工作正常,当我最小化它时,它也工作正常,但当我关闭或从后台删除应用程序时,它不再工作 这是我的清单文件 AndroidManifest.xml 尝试使用return start sticky,但有一个陷阱,一些制造商,如维

从后台删除我的应用程序或从最近的应用程序删除时,为什么我的服务未在后台运行

我非常混淆IntentService和Service,我应该选择哪一种

我正在制作一个应用程序,我将阅读所有的通话记录细节,并将发送自动短信,因此我需要运行后台服务

但问题是,当我运行这个应用程序时,它工作正常,当我最小化它时,它也工作正常,但当我关闭或从后台删除应用程序时,它不再工作

这是我的清单文件

AndroidManifest.xml


尝试使用return start sticky,但有一个陷阱,一些制造商,如维梧、Oppo、Mi,仍然会终止您的服务,从Oreo开始,您需要显示通知以保持您的服务运行,否则android将终止它

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(), "Service is Oncommand", 
Toast.LENGTH_SHORT).show();
return START_STICKY;
有关更多信息,请参阅此链接。

在后台线程中运行IntentService。对于服务,您应该自己创建另一个线程。对于您的目标加载游标,有更好的异步方式-我也这样做了,让我知道您在使用ASUS zenfone max pro M1 9.0时遇到了哪些设备问题,并且我不确定该设备是否有问题,因为该设备几乎有库存,但仍然会终止您的服务。如果没有任何帮助,那么我建议您使用前台服务。
PhoneReceiver.java

public class PhoneReceiver extends Service {
    private static int lastState = TelephonyManager.CALL_STATE_IDLE;
    private static Date callStartTime;
    private static boolean isIncoming;
    private static String savedNumber;

    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(this, "Service is Running", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onDestroy() {
    super.onDestroy();
        Intent restartIntent = new Intent("Restart");
        sendBroadcast(restartIntent);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Toast.makeText(getApplicationContext(), "Service is Oncommand", Toast.LENGTH_SHORT).show();
        return super.onStartCommand(intent, flags, startId);
    }
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(), "Service is Oncommand", 
Toast.LENGTH_SHORT).show();
return START_STICKY;