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