【问题标题】:Android - Activity continues running while rotations are going onAndroid - 活动在旋转进行时继续运行
【发布时间】:2011-12-05 14:29:23
【问题描述】:

在我的活动中,我有一个名为A 的内部类扩展了AsyncTask。我不希望活动在设备旋转时再次破坏和重新创建。我希望它继续运行。我已阅读此链接RotationAsync .他们使用 AsyncTask 的静态类。我在我的活动中声明了许多变量,所以如果我使用静态类,我不能使用活动变量。是否有另一种方法可以在不使用AsyncTask 的静态类的情况下执行上述链接?感谢您的回答。对不起,如果我的英语有一些错误。

【问题讨论】:

    标签: android android-asynctask screen-rotation


    【解决方案1】:

    您可以使用 Manifest 上的此设置来阻止您的 Activity 重新启动:

    <activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">
    

    完成后,您可以使用此代码管理更改

    @Override public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    
    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        //do something here
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        //do something here
    }
    

    }

    更多信息,您可以阅读http://developer.android.com/guide/topics/resources/runtime-changes.html

    【讨论】:

    • 谢谢。但我会用这种方式作为最后的解决方案:(
    • 没问题。一个提示,看看我发布的链接,如果您不使用这种方式,它也可能很有用,因为它显示了如何在应用程序旋转之前保留数据。
    【解决方案2】:

    要保留您的变量,您可以将它们保存到一个 Bundle 中,并在重新创建 Activity 时重新加载它的状态。这应该可以帮助您入门:http://developer.android.com/guide/topics/fundamentals/activities.html#SavingActivityState

    【讨论】:

    • 我的活动播放 mp3 文件并在一组图像中显示一个图像。当我旋转时它如何保存,它继续播放 mp3 文件,不再播放?
    • 您应该使用Service 来管理MP3 的播放,而Activity 可以告诉Service 何时启动和停止。看一下IntentService,这是最容易实现的:developer.android.com/reference/android/app/IntentService.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2017-06-26
    相关资源
    最近更新 更多