gpt4 book ai didi

android - 服务在应用程序关闭时重新启动 - START_STICKY

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:46 27 4
gpt4 key购买 nike

我有一个作为网络服务器运行的应用程序。该应用有一项服务是 START_STICKY 我希望该服务始终运行网络服务器(在通知中向用户提供了停止它的选项)。

问题是当我关闭我的应用程序时,服务器会重新启动(丢失设置等)。它保持在那里很好,但 logcat 显示它正在重新启动。

我可以重新打开我的应用程序并绑定(bind)到新服务,一切正常。虽然再次滑动关闭具有相同的效果。

我需要这个才能不重启。

标准服务代码

private WebServerService mService;
private ServiceConnection mConnection = new ServiceConnection() {

@Override
public void onServiceConnected(ComponentName className,
IBinder binder) {
WebServerService.MyBinder b = (WebServerService.MyBinder) binder;
mService = b.getService();
}

public void onServiceDisconnected(ComponentName className) {
mService = null;
}
};

public serviceStart() {
mIntent = new Intent(mContext.getApplicationContext(), WebServerService.class);
mContext.startService(mIntent);
mContext.bindService(mIntent, mConnection, Context.BIND_AUTO_CREATE);
}

服务启动

 @Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, START_STICKY, startId);
Log.d("SERVICE","Started");
return START_STICKY;
}

最佳答案

简短的回答:你不能。当系统占用内存或用户从最近的应用程序列表中刷出应用程序时,每个 Android 应用程序都可能被系统或用户杀死。这是 Android 设计,所有应用程序都必须遵守它。您可以拥有的唯一(小)改进是将服务设置为 Foreground service :

where the system considers it to be something the user is actively aware of and thus not a candidate for killing when low on memory. (It is still theoretically possible for the service to be killed under extreme memory pressure from the current foreground application, but in practice this should not be a concern.)

关于android - 服务在应用程序关闭时重新启动 - START_STICKY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31759911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com