各位好,我是android的新手,在学习sdk带的Notepad例子时很不解,例子示范了"edit in place" 模式(NoteEditor.java),在onCreate时创建一条新的记录,然后在onPause时保存数据库,并且在onSaveInstanceState中还保存了原来的text。
我一直做J2EE开发,觉得例子中的逻辑很古怪,我觉得这样做更自然,清晰:
1.在onCreate时不要插入新的记录,就好象刚现实一个表单,没有谁会先插一条空记录到数据库。
2.当用户点BACK按钮时,而且只有当用户明确关闭当前activity时,才保存表单内容到数据库。这就等同于按了表单上的保存按钮。如果当前activity被其他界面遮挡,不要去保存数据库。
3.至于在onSaveInstanceState中保存以前的text更是没有必要,如果这个activity被kill了,当被恢复时,只要界面上用户输入的东西被restore足够了。
如果按照我说的思路实现,会有什么问题?请各位赐教。非常感谢。

解决方案 »

  1.   

    LZ很爱思考与研究,至于LZ的问题自己试下,实践下
      

  2.   

    据说Android是在Linux下的,内核可以Kill它一旦进入了暂停状态或是在后台(前台有新的程序)
    ,可能它永远不会再用了,也就是Dead.所以要保存.这与ME不太一样.
      

  3.   

    之所以在onPause时保存数据,是因为Android SDK里面说了只有onPause是一定会被调用的,onDestroy并不能保证一定被回调。
      

  4.   

    activity随时可能被系统kill掉,如果只有得到用户确认的指令再保存数据,对程序来说就比较危险了。
      

  5.   

    2.当用户点BACK按钮时,而且只有当用户明确关闭当前activity时,才保存表单内容到数据库。这就等同于按了表单上的保存按钮。如果当前activity被其他界面遮挡,不要去保存数据库。If an activity is paused or stopped, the system can drop the activity from memory by either asking it to finish, or simply killing its process. When it is displayed again to the user, it must be completely restarted and restored to its previous state.
    程序进程并不是只有用户才有权结束,system can drop the activity from memory.所以才在onPause时保存一下。
      

  6.   

    楼上各位表达的意思都是说activity有可能会被系统killed掉,所以应该在onPause时候将用户的输入保存到数据库,但是不保存又会怎么样呢,即使被killed掉,只要用户回到这个activity时,用户界面上的输入的值还在就不会有问题。activity被killed掉之前,应该会执行onSaveInstanceState,在activity.java中这个方法的实现会将用户界面View的状态保存到Bound对象中去,会在下次该activity显示时restore。所以在onPause中不保存到数据库应该没有问题啊。
      

  7.   

    但是不保存又会怎么样呢,即使被killed掉,只要用户回到这个activity时,用户界面上的输入的值还在就不会有问题。
    ---------------------
    被Kill 掉 就不回不来了
      

  8.   

    楼上,在onSaveInstanceState中已经将用户输入的界面上的数据保存到Bound中(可以看Activity.java这个方法的实现),这个Bound会被传到onRestoreInstanceState或者onCreate中,进行界面的恢复,怎么会回不来呢?
      

  9.   

    Activity不知是哪个XX设计的,恶心得很
      

  10.   

    内存不足时,系统会强行KILL掉后台的ACTIVITY,并且不发送任何通知。
      

  11.   

    activity只要处理onPause()后就有可能被销毁