我有2个班级:
MainActivity.java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyAsyncTask().execute("string");
}
public void setSomething(int param) {
// ... some code here ...
}
}
和
MyAsyncTask.java
public class MyAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... str) {
return "Someting here";
}
@Override
protected void onPostExecute(String jsonStr) {
// how to call setSomething(param) from here?
}
}
如何从MyAsyncTask调用setSomething(param)?
答案 0 :(得分:1)
通常,调用它的方法是引用MainActivity类型的对象并在其上调用此方法。在这个特定的Android场景中,这是否是个好主意,是另一个问题。
答案 1 :(得分:1)
将MainActivity
的引用传递给MyAsyncTask
:
public class MyAsyncTask extends AsyncTask<String, Void, String>
{
private MainActivity mainActivity;
public MyAsyncTask(MainActivity mainActivity)
{
this.mainActivity = mainActivity;
}
}
然后,每当在类MyAsyncTask
中创建MainActivity
的实例时,将this
(MainActivity
实例)传递给构造函数:
new MyAsyncTask(this).execute();
答案 2 :(得分:0)
使用异步库可能值得研究。
使用库来帮助处理异步回调对此非常有用,因为您可以启动微调器,调用api,然后在onSuccess函数或类中的成功回调方法中停止微调器。
这是我经常使用的那个:
<强> LoopJ's Async HTTP Callback Library 强>
这将处理GET和POST请求,具有许多很酷的功能,如自定义超时,JSON格式,onSuccess()和onFailure()方法等。还有很多这个库的工作示例!< / p>