0

現在、非同期タスクで問題が発生しています。進行状況バーが開始され、画面を回転させると、進行状況バーが消えてアクティビティが再開されます。私は使用しようとしています

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

しかし、私の AsyncTask が私のアクティビティにない場合はどうなりますか...多くのアクティビティクラスに共通する別のクラスファイルにあります。次に、どうすれば setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); を取得できますか? 助けてくれる人に感謝します。

4

2 に答える 2

0

この問題に対する私の解決策は次のとおりです。

@Override
protected void onPreExecute() {
    Device.lockOrientation((Activity)context);
    ...
}

@Override
protected void onPostExecute(List<Hydrant> hydrants) {
    Device.releaseOrientation((Activity)context);
    ...
}

デバイスの実装:

public class Device {

    public static void lockOrientation(Activity activity) {
        Display display = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
        int rotation = display.getRotation();
        int tempOrientation = activity.getResources().getConfiguration().orientation;
        int orientation = 0;
        switch(tempOrientation)
        {
        case Configuration.ORIENTATION_LANDSCAPE:
            if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)
                orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            else
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
            break;
        case Configuration.ORIENTATION_PORTRAIT:
            if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_270)
                orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
            else
                orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
        }
        activity.setRequestedOrientation(orientation);
    }

    public static void releaseOrientation(Activity activity) {
        activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
    }

}

AsyncTasks は数秒間だけ実行することを意図しているため、これがユーザーに影響を与えることはめったにないため、これは許容できる解決策です。特に、ProgressDialog のようなものを使用すると、彼女が待たなければならない時間を適切に示すことができます。

于 2013-09-26T22:52:02.357 に答える
0

これは私のアプリで動作します。この行をマニフェストに入れました。

**android:configChanges="orientation|screenSize"**
于 2013-09-03T00:02:49.433 に答える