Java 尝试在AsyncTask的onPostExecute()方法之后使用接口来理解回调

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

我有一个AsyncTask匿名类,我想将它生成的数据发送回activity类,而不必使用.get()暂停UI线程。不过我有点麻烦。我到处搜索,找到了很多答案,但没有一个能一步一步地(无论如何,对我来说)将答案分解的方法。下面是我的顺序:

a。定义接口

包com.example.jsonbourne

公共接口异步任务接口{

  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),它工作得非常好