帮我优化下面的代码 public void showAlertDialog(String message) { if (getCurrentActivity() == null && getTopActivity() == null) { Timber.tag(TAG).w("mCurrentActivity == null when showSnackbar(String,boolean)"); return; } Completable.fromAction(() -> { if (mBuilder == null) { mBuilder = new CommonDialog(getTopActivity()); } mBuilder.setTitle("提示") .setMessage(message) .hideNegativeButton() .setOnClickListener(new CommonDialog.OnClickListener() { @Override public void onConfirmClick(CommonDialog dialog) { dialog.dismiss(); } @Override public void onCancelClick() { } }) .show(); }).subscribeOn(AndroidSchedulers.mainThread()).subscribe(); }
时间: 2024-02-10 12:05:53 浏览: 156
以下是代码的优化建议:
1. 将方法名从 `showAlertDialog` 改为更具有描述性的名称,比如 `showMessageDialog`。
2. 在 `Completable.fromAction` 中的 Lambda 表达式中,如果 `mBuilder` 为空,则会创建一个新的 `CommonDialog` 实例。但是,如果 `mBuilder` 不为空,则可以直接重用它,并更新其标题和消息内容。这样可以减少每次调用方法时创建新实例的开销。
3. 在 `CommonDialog` 中,可以添加一个方法来设置确认按钮的回调,这样可以避免在 `OnClickListener` 中实现一个空的 `onCancelClick` 方法。
下面是优化后的代码:
```
public void showMessageDialog(String message) {
Activity topActivity = getTopActivity();
if (getCurrentActivity() == null && topActivity == null) {
Timber.tag(TAG).w("mCurrentActivity == null when showMessageDialog(String)");
return;
}
Completable.fromAction(() -> {
if (mBuilder == null) {
mBuilder = new CommonDialog(topActivity);
mBuilder.setTitle("提示");
mBuilder.hideNegativeButton();
} else {
mBuilder.setTitle("提示");
}
mBuilder.setMessage(message);
mBuilder.setOnClickListener(new CommonDialog.OnClickListener() {
@Override
public void onConfirmClick(CommonDialog dialog) {
dialog.dismiss();
}
});
mBuilder.show();
}).subscribeOn(AndroidSchedulers.mainThread()).subscribe();
}
```
希望对您有所帮助!
阅读全文