我有循环器视图,已实现滑动以使用撤消按钮删除。因此,当我离开活动时,我必须删除所有待处理的删除项目。 我用这种方法做到了:
public void removeAllPendingRemoval() {
isOnScreen = false;
for (int i = 0; i < mPendingRunnables.size(); i++) {
long id = mPendingRunnables.keyAt(i);
Runnable pendingRemovalRunnable = mPendingRunnables.get(id);
mHandler.removeCallbacks(pendingRemovalRunnable);
removeById(id);
}
notifyDataSetChanged();
}
private void removeById(long id) {
Uri uriWithId = Uri.withAppendedPath(mContentUriWithTable, String.valueOf(id));
mContext.getContentResolver().delete(uriWithId, null, null);
mPendingRunnables.remove(id);
if (isOnScreen) {
int position = getPositionById(id);
notifyItemRemoved(position);
}
}
我在我的活动的onPause方法中调用removeAllPendingRemoval()。但是,如果我快速切换到使用相同db表的另一个活动,则必须已删除项目。如果我等待一段时间或重新开放活动,他们将被删除。我通过调用removeAllPendingRemoval()2次解决了这个问题:
@Override
protected void onPause() {
mAdapter.removeAllPendingRemoval();
mAdapter.removeAllPendingRemoval();
super.onPause();
}
但这似乎是非常糟糕的做法。我该如何处理这个问题?