我正在学习Android。我正在创建一个包含2个活动的应用程序:List Activity列出本地SQLite的所有记录,Edit活动将创建/更新记录。
在编辑活动中,我有一个按钮。单击该按钮时,我将处理创建/更新记录,然后返回到父活动(列表活动)。
点击按钮。我有2个处理创建/更新的解决方案:
1。在UI线程中处理创建/更新(不使用AsyncTask)
此解决方案很好,但我可能需要显示“处理”对话框。
2。使用AsyncTask - 因此在后台线程中进行创建/更新。这是我在编辑活动中的代码:
---- 请注意,Edit活动使用Fragment,因此getActivity()方法将返回EditActivity的实例
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AsyncTask<Phrase, Integer, Integer> asyncTask = new AsyncTask<Phrase, Integer, Integer>() {
@Override
protected Integer doInBackground(Phrase... params) {
Phrase phrase = params[0];
if (phrase._id > 0) {
PhraseDao.update(DbManager.openWrite(getActivity()), phrase);
} else {
PhraseDao.insert(DbManager.openWrite(getActivity()), phrase);
}
return null;
}
@Override
protected void onPostExecute(Integer result) {
Intent intent = new Intent();
getActivity().setResult(Activity.RESULT_OK, intent);
// Close Edit Activity then Go back to List activity
getActivity().finish();
// MY QUESTION: What happens if the EditActivity (getActivity) already destroyed?
// How can I handle destroyed activity here
}
};
asyncTask.execute(a_phrase);
}
});
我不知道在编辑活动(由getActivity()访问)的情况下如何处理'onPostExecute'方法已经被破坏。
有人有什么想法吗?谢谢!
答案 0 :(得分:1)
添加空检查以查看活动是否存在,即
if(getActivity() != null){
Intent intent = new Intent();
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();
}