2013-08-28 5 views
0

У меня в настоящее время проблема в моей asyntask. Когда индикатор выполнения запускается, и как только я поворачиваю экран, индикатор выполнения исчезает и перезапуск активности. Я пытаюсь использоватьИзменение ориентации ориентации во время asyntask в android

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); 

но что, если мой AsyncTask не в моей деятельности ... его в другом файл класс, общем для многого класса активности. Тогда как я могу получить setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); Спасибо всем, кто поможет.

ответ

0

это работает в моем приложении. Я положил эту строку в манифест.

**android:configChanges="orientation|screenSize"** 
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, дающим хорошее представление о том, как долго ей придется ждать.

Смежные вопросы