我正在玩AsyncTask类,以便进行一些耗时的后台处理。我用自己的实现扩展了AsyncTask类。调用doInBackground()
方法时,它将调用本机C函数(此函数将执行一些虚拟的耗时处理并返回一个字符串)。此功能将运行10秒钟。为了便于调试,本机函数将使用LOGI()宏在Eclipse控制台上输出消息的每一项工作量。如果用户在本机方法完成计算之前按下按钮,则调用AsyncTask方法cancel(true)
,但本机函数运行直到结束。我认为原因是因为本机函数驻留在另一个进程(相对于我的Activity加载的共享库的进程)。第一个问题是:当执行本机方法的return语句时会发生什么?返回的字符串是谁?第二个问题是如何安全地停止本机功能(它分配内存,所以我想停止它的执行并释放已用的内存)。