Android 服务在刷出应用程序时被杀死

标签 android service

我有一个 Android 服务类,其代码如下:

public class LoginService extends Service {
BroadcastReceiver wifiStateChangeReciever;

@Override
public IBinder onBind(Intent arg0) {
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i("AndroidLearning", "Service onStartCommand Started.");
    return Service.START_STICKY;
}

@Override
public void onCreate() {
    super.onCreate();
    Log.i("AndroidLearning", "Service Started.");

    final IntentFilter intentFilter = new IntentFilter();
    // intentFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
    intentFilter.addAction("android.net.wifi.STATE_CHANGE");
    wifiStateChangeReciever = new WifiStateChangeReciever();
    this.registerReceiver(wifiStateChangeReciever, intentFilter, null, null);

    Log.i("AndroidLearning", "Reciever Registered.");
}

@Override
public void onDestroy() {
    Log.i("AndroidLearning", "Service Destroyed.");
    this.unregisterReceiver(wifiStateChangeReciever);
}

@Override
public void onTaskRemoved(Intent rootIntent) {
    Log.w("AndroidLearning", "On Task Remove: FLAG_STOP_WITH_TASK - "
            + ServiceInfo.FLAG_STOP_WITH_TASK);
    this.unregisterReceiver(wifiStateChangeReciever);
    Intent restartServiceIntent = new Intent(getApplicationContext(),
    this.getClass()); restartServiceIntent.setPackage(getPackageName());
    PendingIntent restartServicePendingIntent = PendingIntent.getService(
            getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT); 
    AlarmManager alarmService = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
    alarmService.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
            SystemClock.elapsedRealtime() + 1000, restartServicePendingIntent); 
    Log.w("AndroidLearning", "End on task removed");
    super.onTaskRemoved(rootIntent);

}
}

它注册了一个 BroadcastReciever .启动此服务的 Activity 具有以下代码:

Intent intent = new Intent(this, LoginService.class);
startService(intent);

然而,每当从任务列表(最近)中刷出 Activity 时,服务也会停止。我骑过 onTaskRemoved补救它,但它似乎仍然不起作用,AlarmManager 从未启动 pendingIntent .我尝试使用这两种方法:setsetExact对于 AlarmManager .

我还尝试将以下选项添加到 <service>标签

android:stopWithTask="false"
android:process=":remote"

但无济于事。

我在这里做错了什么?感谢您的帮助。

最佳答案

我终于找到了自己问题的答案。这似乎是我在手机(Mi UI)上运行的 android 的特殊风格的问题。关于是否需要允许重新启动每个应用程序都有一个单独的设置。

Screenshot - autostart is the setting that I was looking for

除非配置此设置,否则任何更改权限和设置警报都对我没有帮助。

关于Android 服务在刷出应用程序时被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29607856/

相关文章:

android - 为什么IDEA找不到@android :drawable/ic_btn_search?

java - 从不扩展 Activity 的类调用 Activity

android - 如何更新 Android 中前台服务的通知文本?

java - Android 究竟是如何将AIDL 接口(interface)与Remote Service 联系起来的?

java - 带 float 的 View 支架

java - JSONException : End of input at character 0 故障排除

屏幕关闭时的 Android "slows down"

java - 在Windows服务器上运行jetty+solr

android - 如何在用户滑动应用程序后继续在后台播放音乐?

java - 如何在每个 ListView 行上显示左彩色边框?