java-在Android中异步更新UI

java-在Android中异步更新UI,第1张

概述我有一个每10秒调用一次的Web服务调用,并且应该使用Web服务回复来更新TextView(或每10秒至少显示一条祝酒消息)但是,UI根本没有更新.请在下面找到代码.publicclassMessagesRequestActivityextendsActivity{/**Calledwhentheactivityisfirstcreated.*/S

我有一个每10秒调用一次的Web服务调用,并且应该使用Web服务回复来更新TextVIEw(或每10秒至少显示一条祝酒消息)

但是,UI根本没有更新.

请在下面找到代码.

public class MessagesRequestActivity extends Activity  {    /** Called when the activity is first created. */    String currentMsg="Default";    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.main);        //Calling the webservice        getMessage();    }    public voID getMessage(){        try        {        SoapObject request = new SoapObject("http://tempuri.org/", "getMessage");        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);        envelope.dotNet = true;        envelope.setoutputSoapObject(request);        //Web method call        httpTransportSE androIDhttpTransport = new httpTransportSE("http://192.168.4.50/WebService.asmx");        androIDhttpTransport.call("http://tempuri.org/"+ "getMessage", envelope);        //get the response        SoapPrimitive response = (SoapPrimitive)envelope.getResponse();        //the response object can be retrIEved by its name: result.getProperty("objectname");        String message = (String)response.toString();        Toast.makeText(this, message, Toast.LENGTH_LONG).show();        }        catch (Exception e)        {        e.printstacktrace();        }        try {            Thread.sleep(10000);        } catch (InterruptedException e) {            // Todo auto-generated catch block            e.printstacktrace();        }        }}

@R_419_6120@:

这是一个AsyncTask的例子

public class TalkToServer extends AsyncTask<String, String, String> {@OverrIDeprotected voID onPreExecute() {    super.onPreExecute();}@OverrIDeprotected voID onProgressUpdate(String... values) {    super.onProgressUpdate(values);}@OverrIDeprotected String doInBackground(String... params) {//do your work here    return something;}@OverrIDeprotected voID onPostExecute(String result) {    super.onPostExecute(result);       // do something with data here-display it or send to mainactivity}

然后,您可以通过调用

TalksToServer varname = new TalkToServer(); //pass parameters if you need to the constructorvarname.execute();

Async Docs
Progress Dialog Example

您不想做网络工作或不想在UI线程上调用sleep.如果它是内部类,那么您将可以访问外部类的成员变量.否则,如果要从onPostExecute或其他方法dosBacks doInBackground()更新,请在AsyncTask类中创建构造函数以传递上下文.

总结

以上是内存溢出为你收集整理的java-在Android中异步更新UI全部内容,希望文章能够帮你解决java-在Android中异步更新UI所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1093433.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存