应用程序传导API每隔10秒就会从网络提供商的gps位置调用一次。用户也可以执行几个api调用。
应用程序因法律互联网或更少的互联网连接(设备数据访问)而崩溃,是否有适当的方法来防止应用程序崩溃并保持api请求直到互联网可用。
在这里我张贴我的崩溃责备stacktrace
java.util.concurrent.RejectedExecutionException:
Task android.os.AsyncTask$3@4206a5b0 rejected from java.util.concurrent.ThreadPoolExecutor@41e97858[Running, pool size = 9, active threads = 9, queued tasks = 128, completed tasks = 2]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2011)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:793)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1339)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:590)
at com.pickme.driver.service.LocationUpdate$LocationUpdateTask$1.run(LocationUpdate.java:216)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5333)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:895)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:711)
at dalvik.system.NativeStart.main(Native Method)
queued tasks = 128
表示您已达到AsyncTask的最大任务数:
私有静态最终BlockingQueue sPoolWorkQueue = new LinkedBlockingQueue(128);
一种方法是将作业按某种数据结构(例如捆绑包)排队,并将其存储在某些数据库(sqlite)中。无论如何这将是有用的,因为如果用户将终止您的应用程序,那么现在所有的任务都将丢失。如果它们保留在sqlite中-那么您可以在下次应用运行时将其发送。
您还可以使用Executors.newSingleThreadExecutor,该队列具有无限制的队列,但是您必须自己进行任何UI更新-例如使用处理程序。AsyncTask的实现基于执行器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句