我正在启动asyncTask以在数据库中执行冗长的操作(超过1秒)。
在我启动AsyncTask之后,我想完成它所进行的活动并继续前进。问题是活动一直挂起,直到AsyncTask结束。
我注入任务:
@Inject
CreateMultipleTransactionsTask mCreateMultipleTransactionTask;
以后我点击一个按钮后打电话:
mCreateMultipleTransactionTask.execute(transaction);
在紧接下方我致电finish()
以关闭活动。但是,我看到finish()
被调用但活动仍在那里。
这是任务:
public class CreateMultipleTransactionsTask extends AsyncTask<Transaction, Void, List<Long>> {
@Inject
TransactionDataSource mDataSource;
@Override
protected void onPostExecute(List<Long> longs) {
super.onPostExecute(longs);
mDataSource.close();
}
@Override
protected List<Long> doInBackground(Transaction... params) {
return mDataSource.createRepeatingTransaction(params[0]);
}
}
答案 0 :(得分:0)
在启动AsyncTask后立即终止您的活动,不会阻止AsyncTask运行完成。
它将保留对Activity的引用,使Activity不被垃圾收集
在您的情况下,我建议使用service
即使您完成了活动,该服务也会继续运行。只是不要将它绑定到你要杀死的活动上。