本文介绍了我如何调用回调改造的意图是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要显示在我的web服务调用的改造成功回调一个新的活动。我有困难找到如何使用改造回调的结果,推出新的活动的例子。这是一个好办法做到这一点?难道我之前清理一些东西?

 公共无效的validate(查看视图){
    。RetrofitWebServices.getInstance()webserviceMethod(PARAMS,新的回调<为MyObject>(){
        @覆盖
        公共无效成功(MyObject的对象,响应响应){
            意图barIntent =新的意图(FooActivity.this,BarActivity.class);
            startActivity(barIntent);
        }

        @覆盖
        公共无效失败(RetrofitError错误){
            ...
        }
    });
}
 

解决方案

您可以实施回调与弱引用上下文

 公共类myCallBack函数实现回调<为MyObject> {

    WeakReference的<语境GT; mContextReference;

    公共myCallBack函数(上下文的背景下){
        mContextReference =新的WeakReference<语境>(上下文);
    }

    @覆盖
    公共无效成功(为MyObject为arg0,响应ARG1){
        上下文的背景下= mContextReference.get();
        如果(背景!= NULL){
            意图barIntent =新的意图(FooActivity.this,BarActivity.class);
            context.startActivity(barIntent);
        } 其他 {
            // TODO进程上下文丢失
        }
    }

    @覆盖
    公共无效失败(RetrofitError为arg0){
        // TODO过程中的错误
    }

}
 

只需记住 - 假如上下文丢失发生在执行过程中的要求,但你可能不担心潜在的内存泄漏可能是,如果你保持较强的这个解决方案将无法正常工作参照上下文对象。

I want to display a new activity on success callback of my WebService called by Retrofit.And I have difficulties to find examples on how to use Retrofit callback result to launch new activity.Is that a good way to do it ? Do I have to clean up some stuff before?

public void validate(View view) {
    RetrofitWebServices.getInstance().webserviceMethod(params,new Callback<MyObject>() {
        @Override
        public void success(MyObject object, Response response) {
            Intent barIntent = new Intent(FooActivity.this, BarActivity.class);
            startActivity(barIntent);
        }

        @Override
        public void failure(RetrofitError error) {
            ...
        }
    });
}
解决方案

You can implement Callback with weak reference to Context

public class MyCallback implements Callback<MyObject> {

    WeakReference<Context> mContextReference;

    public MyCallback(Context context) {
        mContextReference = new WeakReference<Context>(context);
    }

    @Override
    public void success(MyObject arg0, Response arg1) {
        Context context = mContextReference.get();
        if(context != null){
            Intent barIntent = new Intent(FooActivity.this, BarActivity.class);
            context.startActivity(barIntent);
        } else {
            // TODO process context lost
        }
    }

    @Override
    public void failure(RetrofitError arg0) {
        // TODO process error
    }

}

Just remember - this solution will not work if Context lost occurred while request in progress but you may don't worry about potential memory leak which may be if you keep strong reference to Context object.

这篇关于我如何调用回调改造的意图是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 21:44
查看更多