我在活动的 onCreateOptionsMenu 方法中实现了一个 coachmark。
/* Coachmark - preview */
if (preview.isEnabled(uuserID)) {
new runOnMainThread(() -> {
final View anchorView = findViewById(R.id.action_preview);
if (anchorView != null) {
new CoachMark.Builder(PreviewActivity.this, anchorView, CoachMarkType.CoachMarkDirection.TOP)
.setText(R.string.hello_tooltip)
.setTextStyleId(R.style.AppStatusBarTextStyle)
.setRadius(MiscUtils.dpToPixel(PreviewActivity.this, 4))
.dismissOnTouch(true)
.dismissOnTouchOutside(true)
.build()
.show();
}
});
}
public static Task<Void> runOnMainThread(@NonNull Runnable runnable) {
return runOnExecutor(runnable, Task.UI_THREAD_EXECUTOR, null);
}
当活动处于焦点时,它会加载一个文件并为活动创建选项菜单。我从createOptionsMenu 调用coachmark,当我使用runOnMainThread() 运行线程时没有显示coachmark,而在使用Handler().post() 时没有显示coachmark。为什么以及何时使用处理程序以及何时使用 runOnMainThread() 的任何原因。