在我的应用程序中,我使用了Android NDK和JNI方法。我正在使用单独的AsyncTask从JAVA调用我的JNI方法,这是一个耗时任务可能需要大约50Secs。因此,当任务正在运行模式时,如果设备休眠或自动锁定,我的Activity中的AsyncTask停止执行并且我的当前活动已完成。
请有人指导我应该做这个问题。任何帮助或建议将不胜感激。
答案 0 :(得分:2)
1)不要使用AsyncTask
。它专为“最多几秒钟”的操作而设计(参见here)。对于长时间运营的操作,他们建议使用Executor
,ThreadPoolExecutor
和FutureTask
。
2)获得partial wake lock。
答案 1 :(得分:0)
在启动长任务之前使用此选项以防止在任务执行期间屏幕锁定。 在androidmanifest中添加权限
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
在开始任务之前
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();