繁体   English   中英

防止服务在android中重启

[英]prevent service restarting in android

我尝试在我的android应用程序中使用服务,但是我遇到了问题。 当我在屏幕锁定后按下打开/关闭按钮时,服务中断运行,看起来服务正在重新启动。 这是我的代码:

public class MyService extends Service {
private static String TAG = "Service";

@Override
public void onCreate() {
  super.onCreate();
  Log.i(TAG, "onCreate");

}

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

@Override
public void onDestroy() {
  Log.i(TAG, "Destroyed");
  super.onDestroy();
}

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

 }

为什么我的服务会多次重启? 如何防止服务重启? 可能吗 ? 谢谢

您的Service会被系统杀死,以节省优先级较高的应用程序的资源(例如:当手机内存不足时)。 被杀死之后,可以根据onStartCommand返回的值重新创建您的Service 如果在onStartCommand上返回START_STICKY ,则系统将在终止服务后重新创建您的服务。 否则, START_NOT_STICKY告诉操作系统不要再打扰重新创建服务。

您可以考虑使用startForeground方法使您的Service保持活动状态。 这里是文档:

启动的服务可以使用startForeground(int,Notification)API将服务置于前台状态,在该状态下,系统认为该服务是用户主动意识到的东西,因此在内存不足时不适合杀死它。 (在理论上,仍然有可能在当前前台应用程序承受极大内存压力的情况下终止该服务,但实际上,这不必担心。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM