Java 尝试在AsyncTask的onPostExecute()方法之后使用接口来理解回调
我有一个AsyncTask匿名类,我想将它生成的数据发送回activity类,而不必使用.get()暂停UI线程。不过我有点麻烦。我到处搜索,找到了很多答案,但没有一个能一步一步地(无论如何,对我来说)将答案分解的方法。下面是我的顺序: a。定义接口 包com.example.jsonbourne 公共接口异步任务接口{Java 尝试在AsyncTask的onPostExecute()方法之后使用接口来理解回调,java,android,interface,android-asynctask,callback,Java,Android,Interface,Android Asynctask,Callback,我有一个AsyncTask匿名类,我想将它生成的数据发送回activity类,而不必使用.get()暂停UI线程。不过我有点麻烦。我到处搜索,找到了很多答案,但没有一个能一步一步地(无论如何,对我来说)将答案分解的方法。下面是我的顺序: a。定义接口 包com.example.jsonbourne 公共接口异步任务接口{ public void callback(); } b、 在AsyncTask类中,创建侦听器方法: public void setListener(AsyncTaskI
public void callback(); }
b、 在AsyncTask类中,创建侦听器方法:
public void setListener(AsyncTaskInterface listener) {
mListener = listener;
}
c、 在onPostExecute()中,设置侦听器上的回调,以便调用实现类:
@Override
protected void onPostExecute(Void result) {
//CALLBACK INTERFACE IMPLEMENTATION
mListener.callback();
}
d、 在UI活动中,在AsyncTask对象上设置侦听器:
@Override
public void onCreate(Bundle firebug) {
super.onCreate(firebug);
setContentView(R.layout.list_user);
;
lv = (ListView) findViewById(R.id.listv);
gj = new GetJson(this);
// CALLBACK INTERFACE IMPLEMENTATION
gj.setListener(this);
}
(lv、gj是在活动类声明之后声明的类对象)
e、 最后,在UI类中实现接口回调方法:
public void callback() {
ArrayList<String> al = gj.getData();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(UserList.this,
android.R.layout.simple_list_item_1, al);
lv.setAdapter(adapter);
Toast.makeText(this, "Synchronization complete", Toast.LENGTH_SHORT)
.show();
}
public void callback(){
ArrayList al=gj.getData();
ArrayAdapter=新的ArrayAdapter(UserList.this,
android.R.layout.simple_list_item_1,al);
低压设置适配器(适配器);
Toast.makeText(这是“同步完成”,Toast.LENGTH\u SHORT)
.show();
}
但是它不起作用。有什么想法吗?我所说的“它不起作用”是指ListView不会被填充,但如果我在AsyncTask上调用.execute().get(),它实际上会被填充。没关系,我自己在仔细考虑之后解决了这个问题:在我发布的代码中,AsyncTask从未被如此自然地调用回调()方法永远不会运行 我只是在onCreate()方法中添加了gj.getData()(以便运行AsyncTask),它工作得非常好