如何在查找 url 时创建微调器?

发布于 2024-11-27 00:11:13 字数 422 浏览 1 评论 0原文

我希望用户按下按钮。

当调用按钮的 onClickListener 时,我想显示一个微调器,直到获取网页为止。

我不想使用 AsyncTask,因为它只能运行一次,并且在检索第一个 url 结果后,用户很可能会多次单击按钮。

那么我该如何使用这个 onClickListener 来做到这一点呢?

findIT.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        item = game.getText().toString();
        getUserPreference();
        itemLookup.loadUrl(url);
    }
});

I would like the user to press a button.

When the onClickListener for the button is called, I would like to display a spinner until the webpage is fetched.

I don't want to use a AsyncTask because it can only be run once and more than likely the user will click the button more than once after the first url results are retreived.

So how would I go about doing this with this onClickListener?

findIT.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        item = game.getText().toString();
        getUserPreference();
        itemLookup.loadUrl(url);
    }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吹梦到西洲 2024-12-04 00:11:13

您仍然可以使用 AsyncTask,只需每次创建一个新任务即可。

public void onClick(View v) {
    new DoWhateverTask().execute();
}

否则,您可以使用 Handler 自行完成。假设您已经为 UI 和工作线程定义了 Handler:

public void onClick(View v) {
    showProgress();
    workerThreadHandler.Post(new Runnable() {
        public void run() {
            doNetworkStuff();  // Which will post progress to the UI thread if needed.
            mainThreadHandler.Post(new Runnable() {
                public void run() {
                    hideProgress();
                }
            });
        }
    });
}

就我个人而言,我认为 AsyncTask 是一个更好的解决方案。

You can still use AsyncTask<>, you just have to create a new one each time.

public void onClick(View v) {
    new DoWhateverTask().execute();
}

Otherwise you can do it yourself using Handlers. Assuming you already have Handlers defined for the UI and a worker thread:

public void onClick(View v) {
    showProgress();
    workerThreadHandler.Post(new Runnable() {
        public void run() {
            doNetworkStuff();  // Which will post progress to the UI thread if needed.
            mainThreadHandler.Post(new Runnable() {
                public void run() {
                    hideProgress();
                }
            });
        }
    });
}

Personally, I think AsyncTask is a nicer solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文