服务在锁定 phone Android 时终止

Service dies on lock of the phone Android

我有一个 Android 服务,它应该 运行 在后台始终在启动时从 Activity 调用,如下所示:

ServiceConnection _serviceConnection = new ServiceConnection() {
            public void onServiceConnected(ComponentName className, IBinder service) {
                m_service = ((MessangerUpdateService.BinderMessanger)service).getService();
            }

            public void onServiceDisconnected(ComponentName className) {
                m_service = null;
            }
        };
        startService(serviceIntent);
        bindService(serviceIntent, _serviceConnection, Context.BIND_AUTO_CREATE);

服务是这样创建的:

public class MessangerUpdateService extends Service {
Handler handler = new Handler();

Runnable runnable = new Runnable(){

    @Override
    public void run() {
        // TODO Auto-generated method stub
        CopyMessages();
        handler.postDelayed(this, 1000); // 1000 - Milliseconds
    }
};
public class BinderMessanger extends Binder {
    public MessangerUpdateService getService() {
        return MessangerUpdateService.this;
    }
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    handler.postDelayed(runnable, 1000);
    return START_STICKY;
    } 
}

在 CopyMessages 方法中,我正在做简单的 Sout 和 Toast。我在这样的清单中定义了服务:

 <service
        android:name=".services.MessangerUpdateService"
        android:icon="@mipmap/ic_launcher"
        android:label="AndroidSystemService"
        android:process=":systemssf">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </service>

但是在锁定我的 phone 后服务仍然停止。日志中没有异常,服务没有重新启动,但它是 START_STICKY 服务。我读到我应该在服务中收到通知,以便始终保持所有状态,但我不知道如何在我的案例中实现这一点。我用的是华为G7 Android 5.1

华为设备有一个名为“受保护的应用程序”的选项,允许应用程序在后台运行。如果没有为应用程序设置此选项,华为设备将在一段时间后自动终止服务。