我有 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/