Android启动后会杀死后台服务吗?

时间:2017-08-07 23:49:06

标签: android android-service foreground-service

我有一个连接蓝牙外围设备的Android服务。

我不希望Android根据自己的判断终止我的服务,因为这会破坏应用程序的目的。

但是,应用程序有时会尝试启动服务并在怀疑时可能会在BT设备范围内进行连接 - 这可能会成功与否。除非连接成功,否则我不想打扰用户在服务成为前台服务时显示的通知。 (用户可以启用或禁用此功能,因此不是在用户背后做事。)

因此我考虑将呼叫延迟到startForeground(),直到蓝牙连接完成。散文中的简短描述(因为代码很冗长):

  • MyService#onStartCommand()创建一个AsyncTask并启动它(它将在后台线程中运行,以保持冗长的蓝牙连接设置远离UI线程。)
  • AsyncTask#run()设置蓝牙连接。
  • AsyncTask#onPostExecute()(在run()完成后在UI线程上运行)验证我们是否已连接,如果是,则调用startForeground(),创建通知。

但是,在onStartCommand()返回后,服务仍然是一个短时间范围,仍然是后台服务。

Android是否有在短时间内取消内存的风险(当它只留下前台服务时)?

如果是这样,Android是否会考虑自服务启动以来经过的时间(首先杀死运行时间最长的服务)?

0 个答案:

没有答案