与屏幕方向改变(Android)的两个具体问题作斗争

与屏幕方向改变(Android)的两个具体问题作斗争,android,screen-orientation,Android,Screen Orientation,我知道您可以使用:android:configChanges=“orientation”来消除方向更改时的重画。虽然它不在我的应用程序中。我已经读到,可能有一种方法,你需要覆盖它,使其工作。但我认为这可能有点过分了 当我将屏幕从纵向旋转到横向(或相反)时,只有两个问题我不想发生 如果用户触摸EditText,则会弹出键盘。你移动方向,它会自动隐藏。我想把软键盘放在车上 我有一个从MySQL数据库加载数据的列表视图。它是通过一个AsynTask实现的。当我切换方向时,我不希望调用此任务 我可以隔离

我知道您可以使用:android:configChanges=“orientation”来消除方向更改时的重画。虽然它不在我的应用程序中。我已经读到,可能有一种方法,你需要覆盖它,使其工作。但我认为这可能有点过分了

当我将屏幕从纵向旋转到横向(或相反)时,只有两个问题我不想发生

  • 如果用户触摸EditText,则会弹出键盘。你移动方向,它会自动隐藏。我想把软键盘放在车上

  • 我有一个从MySQL数据库加载数据的列表视图。它是通过一个AsynTask实现的。当我切换方向时,我不希望调用此任务

  • 我可以隔离这两个问题,还是第一个选项(配置更改)就是答案?


    注:其中有几个是列表活动;但最大的一个是带有Viewpager的FragmentActivity,以及内部的Fragment/ListFRagment(带选项卡)内部类。

    当方向更改时,活动将被销毁并重新创建。如果使用
    configChanges
    将覆盖的方法是
    onConfigurationChanged

    对于键盘问题,听起来您只需要跟踪它的状态,并通过
    Activity.onCreate中传递的
    Bundle
    将其还原


    对于第二个问题,您可以检查是否
    onSavedInstanceState==null
    ,以确定是否需要运行
    AsyncTask
    。当方向更改时,您需要将所有数据保存到
    包中
    onPause

    中的
    中,然后销毁并重新创建活动。如果使用
    configChanges
    将覆盖的方法是
    onConfigurationChanged

    对于键盘问题,听起来您只需要跟踪它的状态,并通过
    Activity.onCreate中传递的
    Bundle
    将其还原

    对于第二个问题,您可以检查是否
    onSavedInstanceState==null
    ,以确定是否需要运行
    AsyncTask
    。您需要将任何数据保存到
    onPause
    中的
    捆绑包中