<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                今天來分享一下 項目中view刷新相關的核心功能。 android里線程之間消息的傳遞都是借助Handler來實現的 用到的場景主要是是Activity、Fragment、Application 、Service、Thread之間的消息互相傳遞 此實現必須借助抽象類來實現即 BaseActivity ?BaseFragment PhoebeApp (現在不討論Service之間的消息傳遞) 先來看一下BaseActivity的實現 ~~~ public abstract class BaseActivity extends Activity implements Handler.Callback{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMgr.push(this); findViewById(); } @Override public boolean handleMessage(Message msg) { return false; } @Override protected void onDestroy() { super.onDestroy(); ActivityMgr.remove(this); } } ~~~ 其中BaseFragment的實現類似。省略 接下來看一下核心類 ~~~ /** * app中用于UI/非UI線程通信的核心工具類<br> * 可以再"UI/非UI線程"往"UI線程"中發信息, 最終接收方為 {@link BaseActivity} {@link BaseFragment} {@link PhoebeApp} * * @author coffee<br> * 2015-12-26下午4:36:26 */ public class HandlerMgr { public static void sendMessage(int what) { int delayMillis = 0; final Message msg = Message.obtain(); msg.what = what; sendMessage(msg, delayMillis); } /** * 將消息發往Application、Activity、Fragment * * @param orig * @param delayMillis */ public static void sendMessage(Message orig, int delayMillis) { // 發往application Message appMessage = Message.obtain(orig); PhoebeApp.getHandler().sendMessage(appMessage); // 發往Activity ArrayList<?> activities = ActivityMgr.getAllActivities(); for (final Object activity : activities) { boolean result = handle(activity, orig, delayMillis); if (result == true) { break;// 停止繼續分發該Message } else { continue; } } // 發往Fragment // ArrayList<?> fragments = FragmentMgr.getAllFragments(); // for (final Object fragment : fragments) { // boolean result = handle(fragment, orig, delayMillis); // if (result == true) { // break;// 停止繼續分發該Message // } else { // continue; // } // } } <span style="white-space:pre"> </span> private static boolean handle(final Object activityOrFragment, Message orig, int delayMillis) { final Message msg = Message.obtain(orig); if (delayMillis == 0) { boolean result = false; if (activityOrFragment instanceof Handler.Callback) { ((Handler.Callback) activityOrFragment).handleMessage(msg); } return result; } else { PhoebeApp.getHandler().postDelayed(new Runnable() { @Override public void run() { if (activityOrFragment instanceof Handler.Callback) { ((Handler.Callback) activityOrFragment).handleMessage(msg); } } }, delayMillis); } return false; } } ~~~ 如果Thread發送的http請求 。請求完成以后 ~~~ public void run(){ // ...處理網絡請求 Message msg = Message.obtain(); msg.what = 123; msg.obj = "{json字符串}"; HandlerMgr.sendMessage(msg, 0); } ~~~ 這個時候如果你Activity需要接收返回的結果 ~~~ @Override public boolean handleMessage(Message msg) { switch (msg.what) { case 123: String json = msg.obj + ""; //處理json數據 break; } } ~~~ 如果你想在多個Activity處理該http返回的結果。只需要在Activity的handleMessage中加一個case就行了 如果需要在多個Activity中接收,這里需要注意一下handlerMessage的返回值 如果返回true 只會有一個Activity 接收到。剩下的都接收不到了。 ~~~ for (final Object activity : activities) { boolean result = handle(activity, orig, delayMillis); if (result == true) { break;// 停止繼續分發該Message } else { continue; } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看