gpt4 book ai didi

android - 可以在 android 中预先创建对话框吗?

转载 作者:行者123 更新时间:2023-11-29 23:17:34 25 4
gpt4 key购买 nike

在我的应用程序中有几个案例,我使用 DialogBu​​ilder 创建和显示具有不同 xml 布局的警报对话框。

我的大部分对话框都很简单——只包含一个时间选择器或数字选择器等。它们的创建和显示速度都很快。

但是其中一个对话框包含 MapView。 build 和展示肯定比其他人慢。我猜是因为 map 。

所以我想知道在创建 Activity 后立即在 android ro 中预先创建对话框是否是一个好习惯,稍后我只显示它。

提前致谢

------ 编辑 - 添加源代码 ------

每当我点击布局上的一个元素时,我都会像这样创建相应的对话框:

AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
LayoutInflater inflater = activity.getLayoutInflater();
final View view = inflater.inflate(R.layout.dialog_XXXX, null);
builder.setView(view);
.....
.....
AlertDialog dialog = builder.create();
builder.show();

mActivity.showProgressDialog(getString(R.string.loading));

对于与 map View 的对话,我有以下内容:

final MapView mapView = view.findViewById(R.id.mapView);
mapView.onCreate(dialog.onSaveInstanceState());
mapView.onResume();// needed to get the map to display immediately

mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
mGoogleMap = googleMap;
mGoogleMap.setMinZoomPreference(12);
mGoogleMap.getUiSettings().setZoomControlsEnabled(true);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(xxxx,yyyyy));
mActivity.hideProgressDialog();
}
});

并且在显示带有 map View 的对话框之前会有延迟。同时我尝试显示的进度对话框根本没有显示。

所以我想知道如果我在创建 Activity 后立即预先创建对话框会怎么样将它赋给一个成员变量(mDialog):

AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
LayoutInflater inflater = activity.getLayoutInflater();
final View view = inflater.inflate(R.layout.dialog_XXXX, null);
builder.setView(view);
.....
.....
mDialog = builder.create();

然后在 UI 上单击以显示预先创建的对话框: mDialog.show();

但我想知道这是不是一个好习惯。是否有理由不预先创建对话框并将实例存储在 Activity (或 fragment )的成员变量中,并在需要时稍后显示它们。

最佳答案

是的。只需确保预创建对话不会减慢您的 Activity 创建速度。

关于android - 可以在 android 中预先创建对话框吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55067458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com