如何在我的Android应用中禁用某些视图的横向模式?
我在后台线程(我使用AsyncTask)下载了一些来自互联网的数据,并在下载时显示进度对话框.方向更改,Activity重新启动,然后我的AsyncTask完成 - 我想关闭progess对话框并启动一个新的Activity.但是调用dismissDialog有时会抛出一个异常(可能是因为Activity被销毁而且还没有启动新的Activity).
处理此类问题的最佳方法是什么(从后台线程更新UI即使用户更改方向也能正常工作)?谷歌有人提供了一些"官方解决方案"吗?
AsyncTask 在另一个线程中运行复杂任务是一件好事.
但是当AsyncTask仍在运行时有方向更改或其他配置更改时,将Activity消除并重新启动电流.并且当实例AsyncTask连接到该活动时,它会失败并导致"强制关闭"消息窗口.
所以,我正在寻找某种"最佳实践"来避免这些错误并防止AsyncTask失败.
到目前为止我看到的是:
onRetainNonConfigurationInstanceActivity并Activity在再次创建时重新启动它.一些代码示例:
屏幕旋转期间的Android AsyncTasks,第一部分和第二部分
你能帮我找到最好的方法来解决问题并且易于实现吗?代码本身也很重要,因为我不知道如何正确解决这个问题.
我的示例改编自其中一个兼容性库附带的示例应用程序之一。那是布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="8dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/fragment_menu_msg" />
<CheckBox android:id="@+id/menu1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:checked="true"
android:text="@string/fragment1menu">
</CheckBox>
<CheckBox android:id="@+id/menu2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:checked="true"
android:text="@string/fragment2menu">
</CheckBox>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这里是一些Java代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_menu);
ViewGroup layout = (ViewGroup) findViewById(R.id.layout);
Button btn = new Button(getApplication());
btn.setId(1);
btn.setText("Button 1");
layout.addView(btn);
mCheckBox1 = (CheckBox) findViewById(R.id.menu1);
mCheckBox1.setOnClickListener(mClickListener);
}
final OnClickListener mClickListener = new OnClickListener() {
public void onClick(View v) {
ViewGroup layout = (ViewGroup) findViewById(R.id.layout);
Button btn …Run Code Online (Sandbox Code Playgroud) 每当我将设备侧向转动时,我的应用程序中的所有内容也会转动并变得扭曲.如何将其锁定为垂直?