[英]Android Java AsyncTask work externally
我是Java / Android的新手,我来自c#。 我一直在研究它,并进行测试,发现当我执行AsyncTask时,主线程会继续执行,而外部任务正在执行它。 我什至发现我只能设置从MainActivity执行外部任务的asynctask。
我的问题是我想执行一个外部类,该类完成后将结果(就像c#一样)返回给maintask而不在MainActivity中设置异步类。
所以..在代码中应该是这样的:
public onClickButton(View view) {
String result = SecondaryClass.DoAsyncTask();
}
private class DoAsyncTask extends AsyncTask<Long, Integer, Integer>
{
@Override
protected Integer doInBackground(Long... params) {
String longString = ThirdAPIClass.GiveMeSomeCode(); //Or work here
return lognString;
}
@Override
protected void onPostExecute(String result) {
return result; //Somehow(?)
}
}
知道Java / Android中是否有类似的东西吗?
PD:我以AsyncTask为例,我不知道是否有另一条指令执行相同或类似的操作。
首先要注意的是,如果您的结果是字符串,那么您需要将extend子句更改为:
class DoAsyncTask extends AsyncTask<Long, Integer, String>
AsyncTask
的onPostExecute
签名void
,并且不返回数据。 最常见的做法是:
要将此类作为活动内部的内部类以及onPostExecute
,可以在该活动内部调用一个方法。
向您的asyncTask类添加一个构造函数,并将活动传递给它,然后使用该活动实例调用该方法。
第一种方法:
@Override
protected void onPostExecute(String result) {
someMethodInMainActivity(result);
}
第二种方法:
public class DoAsyncTask extends AsyncTask<Long, Integer, String>
{
YouActivityName _activity;
public DoAsyncTask(YouActivityName activity)
{
_activity = activity;
}
@Override
protected String doInBackground(Long... params) {
String longString = ThirdAPIClass.GiveMeSomeCode(); //Or work here
return lognString;
}
@Override
protected void onPostExecute(String result) {
if(_activity != null) {
_activity.someMethodInMainActivity(result);
}
}
}
然后,使用以下命令创建AsynTask:
new DoAsyncTask(this);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.