package cn.darkal.networkdiagnosis.Task; import android.widget.TextView; /** * Created by xuzhou on 2016/8/1. */ public abstract class BaseTask { String url; TextView resultTextView; String tag; public BaseTask(String url, TextView resultTextView) { this.url = url; this.resultTextView = resultTextView; } public void doTask(){ resultTextView.setText(""); tag = System.currentTimeMillis()+""; resultTextView.setTag(tag); // TraceTask运行于主线程 if(this instanceof TraceTask){ getExecRunnable().run(); }else { new Thread(getExecRunnable()).start(); } } public class updateResultRunnable implements Runnable{ String resultString; public updateResultRunnable(String resultString){ this.resultString = resultString; } @Override public void run() { if(resultTextView!=null && resultTextView.getTag().equals(tag)) { resultTextView.append(resultString); resultTextView.requestFocus(); } } } public abstract Runnable getExecRunnable(); }