zoukankan      html  css  js  c++  java
  • androidannotations的background和UiThread配合使用參考

    简单介绍

    androidannotations在开发中的代码规范思考:(MVC思考)时间太紧,先贴代码:

    Activity的代码:
    package edu.njupt.zhb.main;
    
    import org.androidannotations.annotations.AfterViews;
    import org.androidannotations.annotations.Bean;
    import org.androidannotations.annotations.EActivity;
    
    import android.app.Activity;
    
    /**
     * @author Zheng Haibo
     * @web  http://www.mobctrl.net
     */
    @EActivity(R.layout.main)
    public class MainActivity extends Activity {
    
    	@Bean
    	MainActions mainActions;
    
    	@AfterViews
    	void afterViews() {
    		doSomething();
    	}
    
    	private void doSomething() {
    		mainActions.doActionsInThread(20, new UiCallback() {
    
    			@Override
    			public void onBackgroundEnd() {
    				// TODO Auto-generated method stub
    				// write the code
    				System.out.println("the background thread end...");
    			}
    		});
    	}
    }
    

    业务逻辑
    MainActions
    package edu.njupt.zhb.main;
    
    import org.androidannotations.annotations.Background;
    import org.androidannotations.annotations.EBean;
    import org.androidannotations.annotations.RootContext;
    import org.androidannotations.annotations.UiThread;
    
    import android.content.Context;
    import android.widget.Toast;
    /**
     * @author Zheng Haibo
     * @web  http://www.mobctrl.net
     */
    @EBean
    public class MainActions {
    
    	@RootContext
    	Context context;
    
    	@Background
    	void doActionsInThread(int params, UiCallback uiCallback) {
    		// database,net,file,sp ...
    		int result = 0;
    		for (int i = 0; i < params; i++) {
    			result = result + i;
    			try {
    				Thread.sleep(200);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			System.out.println("test the thread is run in the background...");
    		}
    		runInUiThread(result, uiCallback);
    	}
    
    	@UiThread
    	void runInUiThread(int result, UiCallback uiCallback) {
    		Toast.makeText(context, result + ", just a test", Toast.LENGTH_SHORT)
    				.show();
    		System.out.println("you can write the ui code ...");
    		uiCallback.onBackgroundEnd();
    	}
    }
    

    回调接口

    package edu.njupt.zhb.main;
    
    /**
     * @author Zheng Haibo
     * @web http://www.mobctrl.net
     */
    public interface UiCallback {
    	public void onBackgroundEnd();
    	// ...
    }
    

    我认为依照这个思路写。代码会比較清爽。

    兴许说原因,先回宿舍了。

    。。。

  • 相关阅读:
    使用 BenchmarkDotnet 测试代码性能
    【UWP】对 Thickness 类型属性进行动画
    【Win10】单元测试中捕获异步方法的指定异常
    【Win10】让 TextBlock 按字符换行
    全国天气预报信息数据 API 功能简介与代码调用实战视频
    5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用
    获取任意链接文章正文 API 功能简介
    开放数据接口 API 简介与使用场景、调用方法
    程序员如何开始做一个自己的 Side Project?
    VSCode 必装的 10 个高效开发插件
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6853664.html
Copyright © 2011-2022 走看看