java - 如何无限循环执行AsyncTask?

标签 java android android-asynctask

我有 AsyncTask 类,其方法如下(类:ApiConnector):

@Override
protected String doInBackground(Void... voids)
{ 
    return getToken(); //<-- do many the most important things and return String
}

@Override
protected void onPostExecute(String result)
{
    super.onPostExecute(result);
}

然后在我的 Activity 中:

new ApiConnector()
{
    @Override
    public void onPostExecute(String result)
    {
        Log.d("here: ", result);
    }
}.execute();

当我执行一次时,它工作得很好,但我必须在无限循环中执行此操作,才能始终在我的市场上获取新鲜的 token ,例如新鲜的苹果。我尝试过类似的事情:

while (true)
{
    new ApiConnector()
    {
        @Override
        public void onPostExecute(String result)
        {
            Log.d("here!", result);
        }
    }.execute();
    Thread.sleep(1000);
}

还有很多很多愚蠢的事情,但我找不到工作方法。所有线程业务对我来说都很棘手。给我一点力气,我一定能做到。

最佳答案

你不想这样做。所有 AsyncTasks 都在一个线程上运行。如果您在 AsyncTask 内无限循环,您将使所有其他任务陷入饥饿。如果您让每个任务开始一个新任务,那么您仍然会面临严重的饥饿问题。

如果您想这样做(我不确定您是否真的这样做,但让我们忽略这一点),正确的方法是使用线程。线程只能有一个巨大的 while(true) 循环和最后的 sleep 语句。

关于java - 如何无限循环执行AsyncTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39356564/

相关文章:

java - 在Java中,如何实现这种类型的数字舍入?

java - 如何使用 xml 文件中的数据填充 SQLite 数据库?

android - 在 Google Drive API 中重复上传所需的 MIME 类型吗?

android - 如何将其更改为 asynctask 并使其与上述 Gingerbread 兼容?

android - 使用对象而不是字符串处理 AsyncTask

java - 如何在 Java(Android) 上迭代我的 RadioButton 以查找字符串

java.lang.NoSuchMethodException : org. springframework.boot.autoconfigure.http.HttpMessageConverters 问题

java - : binary,解释、执行、编译这几个概念之间有什么关系?

android - 我可以在小部件中向 AdapterViewFlipper 添加垂直滑动手势吗?

android - AsyncTaskLoader 基本示例。 (安卓)