我尝试在我的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;
}
}
为什么我的服务重启很多次?我怎样才能阻止服务重启?可能吗 ? 感谢
答案 0 :(得分:3)
您的Service
被系统杀死,以便为更高优先级的应用节省资源(例如:当手机内存不足时)。被杀后,可以根据Service
上返回的值重新创建onStartCommand
。如果您在START_STICKY
上返回onStartCommand
,系统会在杀死服务后重新创建您的服务。否则,START_NOT_STICKY
告诉操作系统不要再次重新创建服务。
您可以考虑使用startForeground
方法让您的Service
保持活力。这是文档:
启动的服务可以使用startForeground(int,Notification)API 将服务置于系统考虑的前台状态 它是用户积极意识到的东西,因此不是 当内存不足时被杀的候选人。 (理论上还是如此 可能会在极端记忆压力下杀死该服务 从当前的前台应用程序,但在实践中这应该 不要担心。)