我目前在asyntask中遇到了问题。当进度条启动并且一旦我旋转屏幕,进度条消失并且活动重新开始。我正在尝试使用
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
但是如果我的AsyncTask不在我的活动中怎么办...它在许多活动类共有的另一个类文件中。然后我怎样才能得到setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);感谢任何有帮助的人。
答案 0 :(得分:0)
这适用于我的应用。我把这一行放在清单中。
**android:configChanges="orientation|screenSize"**
答案 1 :(得分: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这样的东西可以很好地表明她需要等多久。