2013-08-28 19 views
0

我目前在我的asyntask中有问题。当进度条开始并且一旦我旋转屏幕时,进度条消失并且重新开始活动。我试图用在Android中的asyntask处理方向变化

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可以很好地表明她需要等待多长时间。