Android Oreo为后台服务引入了新的限制。 doc州
"当应用程序位于前台时,它可以自由地创建和运行前台和后台服务。当应用程序进入后台时,它有一个几分钟的窗口,在该窗口中仍然允许创建和使用服务。在该窗口的末尾,该应用程序被视为空闲。"
(我强调)
" 几分钟"?
答案 0 :(得分:0)
将您的应用定义为启动器并替换设备的默认启动器(停用它)。如果系统崩溃,系统将自动重新启动启动器。由于启动器将成为您的应用程序,它将自动重启
添加您的清单(explained here):
<intent-filter> <action android:name="android.intent.action.MAIN" /> <!-- The following two intent-filters are the key to set homescreen --> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
答案 1 :(得分:0)
如果您使用volley库进行调用API,则必须添加以下代码
int socketTimeout = 30000;//30 seconds - change to what you want
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
request.setRetryPolicy(policy);
APIController.getInstance(context).addRequest(request, TAG);