Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
Java 用于使数据持久化并与服务器同步的onDestroy_Java_Android - Fatal编程技术网

Java 用于使数据持久化并与服务器同步的onDestroy

Java 用于使数据持久化并与服务器同步的onDestroy,java,android,Java,Android,当应用程序完成时,我有一个小问题要检测。我需要在存储上执行一些操作,如将参数保存到数据库中,并与服务器建立最终连接 问题是,如果我将代码放入ondestoryits,例如,当方向改变时,就会调用它。放置 android:configChanges="orientation|keyboardHidden" 在该活动的清单中,横向/纵向布局不交换。及加入 @Override public void onConfigurationChanged(Configuration newConfig) {

当应用程序完成时,我有一个小问题要检测。我需要在存储上执行一些操作,如将参数保存到数据库中,并与服务器建立最终连接

问题是,如果我将代码放入
ondestory
its,例如,当方向改变时,就会调用它。放置

android:configChanges="orientation|keyboardHidden"
在该活动的清单中,横向/纵向布局不交换。及加入

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.main);
}

更改布局,但按钮和标签无法正确获取
onClickListeners
和文本标签。我怎样才能解决这个问题?谢谢

将按钮和标签声明为类变量。

将按钮和标签声明为类变量。

问题是布局项没有再次初始化,因为您正在
onCreate()
函数中初始化它们,然后在
onConfiguration Changed()中使用新布局中断它们

一个选项是将初始化移动到一个新函数,该函数从
onCreate()
onConfigurationChanged()
调用

另一个选项是在布局中使用
android:onclick=“
(及相关)属性


不过,我会选择不同的选项。我会允许Android管理方向(并调用
onDestroy()
),在
onDestroy()
中,我会安装一个警报,比如说10秒钟(我想再次调用
onCreate()
),这是足够的时间了)。在
onCreate()
中,我将取消报警。当警报触发时,我将执行保存操作。

问题是布局项没有再次初始化,因为您在
onCreate()
函数中初始化它们,然后在
onConfigurationChanged()
中使用新布局中断它们

一个选项是将初始化移动到一个新函数,该函数从
onCreate()
onConfigurationChanged()
调用

另一个选项是在布局中使用
android:onclick=“
(及相关)属性


不过,我会选择不同的选项。我会允许Android管理方向(并调用
onDestroy()
),在
onDestroy()
中,我会安装一个警报,比如说10秒钟(我想再次调用
onCreate()
),这是足够的时间了)。在
onCreate()
中,我将取消报警。当警报触发时,我将执行保存操作。

setContentView
重新创建视图,因此您必须重新绑定数据。最好的方法是从onCreate()和onConfigurationChanged()调用一个函数,并创建布局和绑定。

setContentView
重新创建视图,因此必须重新绑定数据。最好的方法是从onCreate()和onConfigurationChanged()调用一个函数,并创建布局和绑定。

如果您不想在方向发生更改时发生任何事情,那么就不应该重新调用setContentView()。基本上你是在告诉你的应用程序:“方向改变时什么都不要做”。因此,删除
onConfigurationChanged()
中的
setContentView
,或者测试当前哪个方向处于活动状态,然后加载所需的布局资源

当方向更改时,会调用onDestroy(),因为更改会重新启动整个活动

请在此处阅读更多信息:

定向测试:

如果您不想在发生方向更改时发生任何事情,则不应重新设置内容视图()。基本上你是在告诉你的应用程序:“方向改变时什么都不要做”。因此,删除
onConfigurationChanged()
中的
setContentView
,或者测试当前哪个方向处于活动状态,然后加载所需的布局资源

当方向更改时,会调用onDestroy(),因为更改会重新启动整个活动

请在此处阅读更多信息:

定向测试:

你能在活动的覆盖
finish()
中做那件事吗?

你能在活动的覆盖
finish()
中做那件事吗?

既然他再次调用setContentView(),这也不起作用;类变量将过时,因为它们将指向不再存在的布局项;类变量将过时,因为它们将指向不再存在的布局项。谢谢您的回答。警报似乎是让Android管理其余部分的最佳选择。我应该如何实施它?可能有一个处理程序和一个delayedpost/removecallbacks?当您安装一个时,您指定了一个意图(实际上是PendingEvent),以便在警报过期时接收广播,因此您已经做出了决定。您可能需要安排要保存的数据以延长活动的时间,以防活动在警报到期之前被破坏——您可以将其附加到应用程序(请参阅)。谢谢您的回答。警报似乎是让Android管理其余部分的最佳选择。我应该如何实施它?可能有一个处理程序和一个delayedpost/removecallbacks?当您安装一个时,您指定了一个意图(实际上是PendingEvent),以便在警报过期时接收广播,因此您已经做出了决定。您可能需要安排要保存的数据以延长活动的时间,以防活动在警报到期之前被销毁--您可以将其附加到应用程序(请参见)。finish()不是回调,它是一种可以主动调用以通知活动已完成的方法,但这并不是活动消失的唯一方式。finish()不是回调,而是一种可以调用的方法