0

在我的应用程序中,我使用了 Android NDK 和 JNI 方法。我正在使用单独的 AsyncTask 从 JAVA 调用我的 JNI 方法,这是一个耗时的任务,可能需要大约 50 秒。因此,当任务处于运行模式时,如果设备睡眠或自动锁定,我的 Activity 中的 AsyncTask 停止执行并且我当前的活动已完成。

请有人指导我应该在这种问题上做些什么。任何帮助或建议将不胜感激。

4

2 回答 2

2

1)不要使用AsyncTask。它专为“最多几秒钟”的操作而设计(请参阅此处)。对于长时间运行的操作,他们建议使用ExecutorThreadPoolExecutorFutureTask

2) 获得部分唤醒锁

于 2013-10-16T06:32:32.080 回答
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();
于 2013-10-16T06:41:50.263 回答