Rya*_*yan 5 java xml eclipse android data-persistence
我制作了一个基本的数据记录应用程序,它应该让用户将值输入到动态且通常大量的 EditText 视图中。用户输入完所有数据后,可以按下一个按钮,拍摄数据条目的图片(请耐心等待将输入存储为图片,这样做是有特定原因的),并将图片保存到存储中。
问题: 除了一个特定问题外,它运行得很好。有时,当用户将手机置于空闲状态时(这种情况在实际保存输入之前经常发生),EditText 视图中的所有输入都会被清除(让我成为一个非常生气/悲伤的人)。更重要的是,只有当我在现场并且无法查看 Eclipse 中的日志文件以找出哪些方法可能被调用与正常情况不同时,才会发生这种情况。
问题:为什么当手机进入空闲状态和从空闲状态返回时,我的 EditText 中的值大部分时间都保持不变,但在看似随机(且通常不方便)的情况下它们会清除?
我有一种感觉,这是由于在某些情况下调用 onStop() 而不是 onPause() (或者反之亦然)引起的,但我对这些方法的了解还不够及时。另外,我知道这个问题可以通过共享首选项文件(或一些类似的想法)来解决,但我想知道发生了什么,以便更好地理解。
细节:
-我不确定这些代码中的任何一个是否可能以有意义的方式与该问题相关,但如果有帮助的话,我将包含我的 onCreate() 方法的片段。让我知道是否需要添加其他内容:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_param);
Intent intent = getIntent();
//Rest of the code just builds the layout from data taken from the intent
Run Code Online (Sandbox Code Playgroud)
- 除了 onCreate() 之外,我没有重写任何生命周期方法(即 onStop()、onResume() 等)。据我所知,我的活动中的其他方法都不应该与该问题有任何关系
我认为问题在于,有时当您的应用程序进入“空闲”状态(即进入后台、屏幕关闭)时,Android 会自动清理它并销毁所有数据,包括您的EditTexts
.
如果某个活动暂停或停止,系统可以通过要求其完成或简单地终止其进程来从内存中删除该活动。当它再次显示给用户时,必须完全重新启动并恢复到之前的状态。
http://developer.android.com/reference/android/app/Activity.html
要解决此问题,您可以重写该onSavedInstanceState()
方法来保存您的EditText
值,然后onCreate()
在您返回活动时将这些值拉回。然后,您需要进行检查,看看是否需要EditTexts
从这些值中重新填充您的值,或者它们是否为空。更多相关内容请参见此处。
归档时间: |
|
查看次数: |
3520 次 |
最近记录: |