android不能直接在非ui线程中操作ui元素怎么解决,在非UI线程中进行一些Android UI操作...

小编典典

如果您不想使用AsyncTask,请在您的主要活动中尝试使用带有内部类(ResponseHandler)的观察者模式,对不起,我无法正确设置格式,但是我确定您知道

public class WorkerThread extends Observable implements Runnable {

public void run() {

try {

DoSomething();

String response = "Doing something";

setChanged();

notifyObservers( response );

DoSomethingElse();

String response = "Doing something else";

setChanged();

notifyObservers( response );

}

catch (IOException e) {

e.printStackTrace();

}

}

private void DoSomething(){

}

private void DoSomethingElse(){

}

public class MainActivity{

public class ResponseHandler implements Observer {

private String resp;

public void update (Observable obj, Object arg) {

if (arg instanceof String) {

resp = (String) arg;

//Write message to UI here ie System.out.println("\nReceived Response: "+ resp );

//or EditText et = (EditText)findViewById(R.id.blah);

// blah.SetText(resp);

}

}

}

private void doStuffAndReportToUI(){

final WorkerThread wt = new WorkerThread();

final ResponseHandler respHandler = new ResponseHandler();

wt.addObserver( respHandler );

Thread thread = new Thread(wt);

thread.start();

}

2020-09-21

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值