简单使用Google Agera框架

Agera是来自Google新推出的一款响应式框架。其实在Android开发中,大家常常会面对非UI线程更新UI的问题。这个问题在百度上解答已经非常多了。其根本就是使用Handler,传递消息。但是Handler这个类的使用,不那么美观,结构不好看,还容易内存泄露。因此,各种框架对其进行了封装。从原生框架中的AsyncTask到后面EventBus,到如今的Agera都是对Handler传递消息这件事,进行了各种封装,让它更加的优雅,刷新UI界面更加方便。

Agera其实就是个观察者模式。分为两部分,数据源和观察者。

下面我们就来看看一个简单的例子

  • 实体类(也就是数据源)
public class BaseBean extends BaseObservable {
    private String content ;

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
        update();
    }

    public void update(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                content += " 我在发生改变";
                dispatchUpdate();
            }
        }).start();
    }
}
  • Activity类(观察者)
public class AgeraActivity extends Activity implements Updatable {
    private BaseBean baseBean;
    private EditText editText;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.agera);

        textView = (TextView) findViewById(R.id.tv_test1);
        baseBean = new BaseBean();
        //
        editText = (EditText) findViewById(R.id.edite_text);
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if (baseBean != null) {
                    baseBean.setContent(s.toString());
                }
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        baseBean.addUpdatable(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        baseBean.removeUpdatable(this);
    }

    @Override
    public void update() {
        textView.setText(baseBean.getContent());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值