当我改变屏幕方向时,我的Android应用程序崩溃了。

3

在我的应用程序中,网络访问是在一个线程中运行的。每当我改变屏幕方向时,我的应用程序就会崩溃。我该如何解决这个问题?

4个回答

2

感谢您的回答。 我通过实现Activity生命周期方法OnStop来解决了问题。 在该方法中,我只添加了以下代码:

@Override
public void onStop()
{
    super.onStop();
    if(thread!=null)
        thread.stop();
    if(dialog!=null)
        dialog.dismiss();
}

1
每次设备方向改变时,活动实际上会停止并重新启动。您需要考虑到这一点来编写您的线程,即在设备改变方向时停止线程并重新启动它,可能在之间保存状态。

1

嗨,我认为你应该先了解Activity生命周期。

因为每当方向发生变化时,OnCreate()方法都会被调用,

这会导致你的应用程序崩溃。

最好的问候, ~Anup


嗨Anup,我正在尝试实现onRestart()和更改方向,但它不会调用此方法,而是再次调用onCreate()。 - Datta Kunde
嘿,抱歉它基本上被称为onCreate()。 - Anup Rojekar

1

您可以让应用程序监听会导致重启的事件,例如方向和键盘可见性更改,并在Activity内处理它们。

首先,在Activity的清单节点中添加android:configChanges节点。

 android:configChanges="keyboardHidden|orientation"

在Activity中重写onConfigurationChanged方法,并调用setContentView方法,以强制GUI布局在新方向下重新完成。
@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  setContentView(R.layout.myLayout);
}

兄弟,这在我的情况下行不通。当改变方向时,onConfigurationChanged()没有被调用。有什么替代方法吗? - Datta Kunde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接