android cpp AsyncTask如何回收代码示例
时间: 2024-03-03 16:53:40 浏览: 74
以下是使用智能指针管理 AsyncTask 对象的代码示例:
```c++
#include <memory>
#include <functional>
#include <future>
class MyAsyncTask {
public:
MyAsyncTask() {}
~MyAsyncTask() {}
void execute() {
// 异步执行任务
std::async(std::launch::async, std::bind(&MyAsyncTask::doInBackground, this))
.then(std::bind(&MyAsyncTask::onPostExecute, this, std::placeholders::_1));
}
private:
void doInBackground() {
// 执行耗时任务
}
void onPostExecute(std::future<void> future) {
// 任务完成后,删除对象
std::shared_ptr<MyAsyncTask> self(this);
}
};
// 在其他代码中,执行 AsyncTask
std::shared_ptr<MyAsyncTask> task(new MyAsyncTask());
task->execute();
```
在上面的示例代码中,MyAsyncTask 类的 execute() 方法会异步执行一个耗时的任务,并在任务完成后调用 onPostExecute() 方法。在 onPostExecute() 方法中,我们使用 std::shared_ptr 来管理 MyAsyncTask 对象的内存。这样,当任务完成后,智能指针会自动释放对象的内存,避免了手动删除对象的麻烦。
阅读全文