• android Activity runOnUiThread() 方法的使用


    转载请标明出处:https:////www.cnblogs.com/tangZH/p/6107556.html

    更多精彩文章: http://77blogs.com/?p=138

    利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThread(Runnable).

    Runnable对像就能在ui程序中被调用。

    /**
    
     * Runs the specified action on the UI thread. If the current thread is the UI
    
     * thread, then the action is executed immediately. If the current thread is
    
     * not the UI thread, the action is posted to the event queue of the UI thread.
    
     *
    
     * @param action the action to run on the UI thread
    
     */
    
    public final void runOnUiThread(Runnable action) {
    
        if (Thread.currentThread() != mUiThread) {
    
            mHandler.post(action);
    
        } else {
    
            action.run();
    
        }
    
    }

    从上面的源代码中可以看出,程序首先会判断当前线程是否是UI线程,如果是就直接运行,如果不是则post,这时其实质还是使用的Handler机制来处理线程与UI通讯。

            private ProgressDialog progressDialog;
     Context mContext;


    progressDialog = new ProgressDialog(mContext); String stri = mContext.getResources().getString(R.string.Is_sending_a_request); progressDialog.setMessage(stri); progressDialog.setCanceledOnTouchOutside(false); progressDialog.show(); new Thread(new Runnable() { public void run() { try { ((Activity)mContext).runOnUiThread(new Runnable() { public void run() { progressDialog.dismiss(); String s1 = mContext.getResources().getString(R.string.send_successful); Toast.makeText(mContext, s1, Toast.LENGTH_LONG).show(); } }); } catch (final Exception e) { ((Activity)mContext).runOnUiThread(new Runnable() { public void run() { progressDialog.dismiss(); String s2 = mContext.getResources().getString(R.string.Request_add_buddy_failure); Toast.makeText(mContext, s2 + e.getMessage(), Toast.LENGTH_LONG).show(); } }); } } }).start();

    用这种方式创建ProgressDialog就比较方便,或者刷新adapter也比使用Thread+Handler方便。

    如果不是在activity中创建,需要在前面加上((Activity)mContext).

  • 相关阅读:
    10 道选择题,测试你是不是死忠谷粉
    JBoss Seam 3.0.0.Beta2 发布
    送给十二星座的名言警句
    Chinasb & B3log!
    GAE 博客——B3log Solo 0.2.5 正式版发布了!
    明天发布 B3log Solo 0.2.5
    JBoss Seam 3.0.0.Beta2 发布
    10 道选择题,测试你是不是死忠谷粉
    Python数据分析工具包:Pandas
    Programming Computer Vision with Python: Tools and algorithms for analyzing images
  • 原文地址:https://www.cnblogs.com/tangZH/p/6107556.html
Copyright © 2020-2023  润新知