Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当进程终止我在android中的活动时,是否可以保存我的私人日期?_Android_Process - Fatal编程技术网

当进程终止我在android中的活动时,是否可以保存我的私人日期?

当进程终止我在android中的活动时,是否可以保存我的私人日期?,android,process,Android,Process,当我的活动第一次启动时,我必须给出一个对话框。 所以我是在我的生活中这样做的 public void onCreate(Bundle savedInstanceState) 和使用 protected void onSaveInstanceState (Bundle outState) 为了节省我发射的时间。我注意到操作系统创建了一个新的Bundle outState,而不是使用旧的Bundle。我无法调试重新创建时的日期 我的问题: 我保存在onSaveInstanceState中的日期

当我的活动第一次启动时,我必须给出一个对话框。 所以我是在我的生活中这样做的

public void onCreate(Bundle savedInstanceState)
和使用

protected void onSaveInstanceState (Bundle outState) 
为了节省我发射的时间。我注意到操作系统创建了一个新的Bundle outState,而不是使用旧的Bundle。我无法调试重新创建时的日期

我的问题:

我保存在onSaveInstanceState中的日期真的可以被Oncreate读取吗?如何调试

我是否可以使用私有成员vary来保存状态,并且在进程被OS终止时不会被OS删除

谢谢您的帮助。

捆绑包不能用于在应用程序重新启动时传输数据

您最好将数据保存到更永久的存储中,如SharedReferences,将此代码放入onCreate:


我测试onSaveInstanceState,日期不会被保存。我必须用静电来处理这个问题。但我发现当我重新启动我的应用程序时,静态不会启动。我必须在OnDestroy杀了它。安卓是多么愚蠢!!安卓有多蠢?我想你会发现问题不在于Android!当你说我测试onSaveInstanceState时,日期不会被保存,你是什么意思?我经常使用onSaveInstance,效果很好。您如何将日期存储到捆绑包中?请出示密码。我很抱歉,我不知道你们在说什么,我必须在OnDestroy中杀死它。杀什么?静电?onSaveInstance中不需要使用静态。若要在onCreate中调试日期,为什么不将该值分配给保存该值的任何字段,然后将该值写入logcat?我的代码:@Override protected void onSaveInstanceState Bundle outState{super.onSaveInstanceStateoutState;sp=PreferenceManager.GetDefaultSharedReferencesThis;如果sp.getBooleanSP_协议,false==true{mb_isMenuActiveOnPause=true;outState.putBooleanMENU_ACTIVE_ONPAUSE_计数器,mb_isMenuActiveOnPause;}我在Oncreate中得到的值如下:if savedInstanceState!=null{mb_isMenuActiveOnPause=savedInstanceState.getBooleanMENU_ACTIVE_ONPAUSE_COUNTER,false;}谢谢你的回答。但我想在第一次创建时显示一些对话框,而不是所有时候。你知道我的活动可能会被操作系统终止,如果我只使用SharedReferences在Onpause中保存数据,它无法知道这是第一次还是第二次。请参阅修订版,我添加了检查o是否显示对话框。此外,您不必保存确切的运行时间,只需在显示对话框时将布尔值保存到首选项即可。我回答的要点是,不要将savedInstanceState用于应该存在很长时间的值。谢谢。您太好了。也许我不是很清楚。我必须让应用程序在最后异常停止如果它不正常停止,则需要时间。现在我再次尝试onSaveInstanceState,直到现在它仍然可以正常工作。谢谢!谢谢大家,我想我知道我错在哪里了,我必须在onSaveInstanceState中保存我的数据,并且它只能在Oncreate中使用一次。谢谢大家。艾米,你应该更清楚,不要讨论保存数据的主题在onSaveInstance中,但是关于你试图实现的目标。因为大多数时候你实际上需要实现一个不同的目标,或者以不同的方式实现它。在Android中,“异常停止”意味着强制关闭,当系统从内存中删除你的非活动应用程序时——这不是异常,这是你不应该尝试的预期行为胡思乱想。
SharedPreferences prefs;
prefs = getSharedPreferences( "preferences", Context.MODE_PRIVATE);
long last_run_time = prefs.getLong( 'last_run', 0 );
if( last_run_time == 0 ) { // zero means your app has never been run
    // display dialog, this is the first time!
    ....
    // this saves current system time to prevent your dialog being seen again
    prefs.edit().putLong( 'last_run', system.currentTimeMillis() ).commit();
}