gpt4 book ai didi

java - AsyncTask 在结束 doInBackground 之前检查 MainActivity 中的变量集

转载 作者:行者123 更新时间:2023-12-02 00:57:45 25 4
gpt4 key购买 nike

我想检查 MainActivity 中的变量,同时从它创建的 AsyncTask 在后台运行,然后当该变量设置为某个值(假设为 true)时结束 AsyncTask;

主要 Activity

    @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
new MyTask(this).execute();
}

我的任务


public class MyTask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... ignore)
{
//check for MainActivity variable then exit or PostExecute when this variable is set to true?
}

}

最佳答案

假设 Android 在这方面与普通 Java 线程和可运行程序类似,我假设您可以在主线程 (MainActivity.java) 中创建一个原子变量,然后在 AsyncTask 中检查它。

例如

private final AtomicInteger myInt = new AtomicInteger(whatever value you need);

public int getMyInt() {
return myInt.get();
}

然后获取该值并用它做你想做的事情。您还可以编写方法来修改它或做任何您想做的事情。 https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html

否则,如果您需要传递对象,则必须研究同步,您可以通过谷歌搜索找到一些关于同步的好文章。

编辑:要实现,您可以将 AtomicInteger 和方法设为静态,然后只需调用该方法即可获取整数的值。

例如

private final static AtomicInteger myInt = new AtomicInteger(whatever value you need);

public static int getMyInt() {
return myInt.get();
}

然后在你的 AsyncTask 中:

public void doInBackground() {
if(MainActivity.getMyInt() == some value) {
//do something with it
}
}

关于java - AsyncTask 在结束 doInBackground 之前检查 MainActivity 中的变量集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61122497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com