更新本地SQLite中的数据,然后返回到父Activity解决方案

时间:2014-07-17 15:54:09

标签: android android-activity android-asynctask

我正在学习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'方法已经被破坏。

有人有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

添加空检查以查看活动是否存在,即

  if(getActivity() != null){
    Intent intent = new Intent();
    getActivity().setResult(Activity.RESULT_OK, intent);
    getActivity().finish();
  }