服务android可以';在最近的应用程序中关闭时,在某些设备(如小米mi4i)中不能再次启动

服务android可以';在最近的应用程序中关闭时,在某些设备(如小米mi4i)中不能再次启动,android,service,Android,Service,如果我的应用程序已经在后台服务中运行,然后在最近的应用程序中关闭此应用程序,问题是我的应用程序无法在后台服务中再次启动。只有在其他设备(如小米mi4i)上出现此问题,其他设备才能正常运行 -服务 public class MyService extends Service { @Override public void onCreate() { super.onCreate(); } @Override public int onSta

如果我的应用程序已经在后台服务中运行,然后在最近的应用程序中关闭此应用程序,问题是我的应用程序无法在后台服务中再次启动。只有在其他设备(如小米mi4i)上出现此问题,其他设备才能正常运行

-服务

public class MyService extends Service {

    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Service Started...", Toast.LENGTH_LONG).show();
        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        Toast.makeText(this, "Service Destroyed...", Toast.LENGTH_LONG).show();
        onCreate();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
-主要活动

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void startService(View view) {
    Intent intent = new Intent(this, MyService.class);
    startService(intent);
}

public void stopService(View view) {
    Intent intent = new Intent(this, MyService.class);
    stopService(intent);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

}

如果警报管理器不能自动启动,您可以使用警报管理器启动服务


旧的这篇文章帮助您做到这一点

如果报警管理器不能自动正确启动,您可以使用它启动服务


旧的这篇文章可以帮助你做到这一点

我也面临着同样的问题,Mi 4i使用以下方式安排了一个报警管理器,但没有启动

AlarmManager am = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
Intent intent = new Intent(this, CheckReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
am.setExact(AlarmManager.RTC_WAKEUP, (System.currentTimeMillis() + 5000), pendingIntent);

对于Mi 4i,我也面临同样的问题,使用以下方式计划了一个报警管理器,但没有启动

AlarmManager am = (AlarmManager) getSystemService(Service.ALARM_SERVICE);
Intent intent = new Intent(this, CheckReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
am.setExact(AlarmManager.RTC_WAKEUP, (System.currentTimeMillis() + 5000), pendingIntent);

小米在其安全应用程序下提供“自动启动”选项。您必须手动将此选项切换为“开”。除非完成此操作,否则如果应用程序被终止,您的应用程序将无法执行任何后台任务,并且您将无法执行简单的后台操作,如获取推送通知、更新位置等。如果服务在后台被终止,此选项将使服务能够重新启动。任何后台服务,如GCM定期任务、AlarmManager,在启用自动启动选项之前都将无效。

小米在其安全应用程序下提供“自动启动”选项。您必须手动将此选项切换为“开”。除非完成此操作,否则如果应用程序被终止,您的应用程序将无法执行任何后台任务,并且您将无法执行简单的后台操作,如获取推送通知、更新位置等。如果服务在后台被终止,此选项将使服务能够重新启动。任何后台服务,如GCM定期任务、AlarmManager,在启用自动启动选项之前都将无效。

您是否检查了Xaiomi设备对您的应用程序的权限?设置你的应用程序?Xaiomi在很多方面都很糟糕,因为它更像是一个iOS复制品,而不是Android手机。你检查过Xaiomi设备给你的应用程序什么权限了吗?设置你的应用程序?Xaiomi在很多方面都很糟糕,因为它更像是一个iOS复制品,而不是一个Android手机。嗨@Giaple:我试过alarm manager,但发现了相同的问题,有没有建议在(如小米mi4i)设备中的应用程序死机后成功运行后台服务。嗨@Giaple:我试过alarm manager,但发现了相同的问题,建议在(如小米mi4i)设备中的应用程序终止后成功运行后台服务。