当应用恢复时,Android EditText有时会丢失输入 - java

我制作了一个基本的数据记录应用程序,该应用程序应该让用户输入值进入动态且通常是大量EditText视图中。用户完成所有数据的输入后,可以按下一个按钮,为数据条目拍照(与我有关将输入存储为图片有关,这是有特定原因的),然后将图片保存到存储器中。

问题:
除了一个特定的问题,它工作得很好。有时,当用户将电话置于空闲状态(这在实际保存输入之前经常发生)时,EditText视图中的所有输入都会清除(使我非常生气/沮丧)。而且,只有当我在实地并且无法查看eclipse中的日志文件以找出与正常方法不同的方法时,它才会发生。

问题:
为什么在手机进入和离开空闲状态的大多数时间里,我的EditTexts中的值都保持不变,而在看似随机(且通常不方便)的情况下却清除了?

我感觉这是由在某些情况下调用onStop()而不是onPause()引起的(或者反之亦然)引起的,但是我对这些方法的了解还不是很快。另外,我知道可以通过sharedPreferences文件(或某些类似的想法)解决此问题,但是我想知道发生了什么,以便比其他任何事情都更加了解。

详细信息:

-我不确定这段代码中是否有任何有意义的方式与问题相关,但是如果有帮助,我将包括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

-除了onCreate()之外,我没有重写任何生命周期方法(即onStop(),onResume()等)。据我所知,我 Activity 中的其他方法均不应与问题有关/

参考方案

我认为问题在于,当您的应用“闲置”(即进入后台,关闭屏幕)时,Android会自动清理它并销毁所有数据,包括EditTexts中的数据。

如果 Activity 被暂停或停止,则系统可以通过要求 Activity 结束或直接终止其进程来将其从内存中删除。当再次将其显示给用户时,必须完全重新启动它并将其还原到以前的状态。

http://developer.android.com/reference/android/app/Activity.html

要解决此问题,您可以重写onSavedInstanceState()方法以保存EditText值,然后当您返回 Activity 时onCreate()将这些值拉回。然后,您将需要进行检查,以查看是否需要从这些值重新填充EditTexts或它们是否为空。有关此here的更多信息。

android-android studio模拟器中的SSL问题,在手机上可以正常工作 - java

我有一个可以通过https调用网络服务的应用程序。当我在手机上运行apk时,效果很好。但是,在模拟器中,所有通过POST的SSL请求均失败,并显示以下信息: 读取错误:ssl = 0xb402be00:SSL库失败,通常是一个协议 错误 错误:100c50bf:SSL例程:ssl3_read_bytes:NO_RENEGOTIATION(外部/无聊的sl /…

绑定Java库Xamarin.Android - java

我花了两天时间在每个论坛,文档,tuto,博客等上寻找答案。我为实习生启动了一个Android应用程序,因为我不懂Java,所以用xamarin C#开发了它。直到最近一切都还不错,但现在我需要集成一个SDK才能在应用程序中使用POS(销售点),但是该库是用Java编写的,即使跟随文档或辅导老师,我也无法将其与xamarin绑定(我什至无法调试)。这里有人已…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

Android Studio报告“android sdk解析不正确” - java

我只是将一个android项目从eclipse迁移到了android studio,但是当我尝试对其进行编译时,出现错误“android sdk被错误地解析”。有什么帮助吗? 参考方案 尝试将Android Studio配置为指向您的SDK安装。

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …