API级别26的Android后台服务超时

时间:2018-03-13 10:40:24

标签: android android-8.0-oreo background-service

Android Oreo为后台服务引入了新的限制。 doc

  

"当应用程序位于前台时,它可以自由地创建和运行前台和后台服务。当应用程序进入后台时,它有一个几分钟的窗口,在该窗口中仍然允许创建和使用服务。在该窗口的末尾,该应用程序被视为空闲。"

(我强调)

" 几分钟"?

2 个答案:

答案 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);