美文网首页
UI消息机制

UI消息机制

作者: clover_king | 来源:发表于2017-11-27 10:47 被阅读0次

//WeakReference 弱引用,当WeakReference指向的对象是null时,gc就会回收这个对象

public class SMUIManager {

private static SMUIManager instance;

public static synchronized SMUIManager instance() {

if (instance == null) instance = new SMUIManager();

return instance;

}

private List> activitys = new ArrayList>();

private SMUIManager() {

}

public void pushActivity(BaseActivity activity) {

activitys.add(new WeakReference(activity));

}

public void popActivity(BaseActivity activity) {

removeActivity(activity.getIdentifier());

}

private void removeActivity(String identifier) {

for (int i = 0; i < activitys.size(); i++) {

WeakReference weakActivity = activitys.get(i);

BaseActivity activity = weakActivity.get();

if (activity != null && activity.getIdentifier().equals(identifier)) {

activitys.remove(weakActivity);

}

}

}

//出现异常处理这个

public void popAllAcitvity() {

while (activitys.size() > 0)

popActivity();

}

public void popActivity() {

WeakReference weakActivity = activitys.get(activitys.size() - 1);

BaseActivity activity = weakActivity.get();

if (activity != null) {

activity.finish();

}

activitys.remove(weakActivity);

}

/**

* 发送状态的消息

* @param msgCode  消息码

* @param param

*/

public void sendMessage(final int msgCode, final Object param) {

for (int i = 0; i < activitys.size(); i++) {

WeakReference weakActivity = activitys.get(i);

final BaseActivity activity = weakActivity.get();

if (activity != null) {

activity.runOnUiThread(new Runnable() {

@Override

public void run() {

activity.onNotify(msgCode, param);

}

});}

}

}

public void sendDisMessage(final int msgCode, final Object param, final int stateCode) {

for (int i = 0; i < activitys.size(); i++) {

WeakReference weakActivity = activitys.get(i);

final BaseActivity activity = weakActivity.get();

if (activity != null) {

activity.runOnUiThread(new Runnable() {

@Override

public void run() {

activity.onDisNotify(msgCode, param, stateCode);

}

});}

}

}

}

public class BaseActivity extends FragmentActivity {

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//基类中注册消息

SMUIManager.instance().pushActivity(this);

}

//每一个子类activity,子类fragment都可以收到消息

public void onNotify(final int msgCode, final Object param) {

List fragments = getSupportFragmentManager().getFragments();

if (fragments == null) return;

for (int i = 0; i < fragments.size(); i++) {

Fragment fragment = fragments.get(i);

if (fragment instanceof BaseFragment) {

((BaseFragment) fragment).onNotify(msgCode, param);

}

}

}

//每一个子类activity,子类fragment都可以收到消息

public void onDisNotify(final int msgCode, final Object param, final int statuCode) {

List fragments = getSupportFragmentManager().getFragments();

if (fragments == null) return;

for (int i = 0; i < fragments.size(); i++) {

Fragment fragment = fragments.get(i);

if (fragment instanceof BaseFragment) {

((BaseFragment) fragment).onNotify(msgCode, param);

}

}

}

@Override

protected void onDestroy() {

////基类中注销消息

SMUIManager.instance().popActivity(this);

super.onDestroy();

}

}

相关文章

  • UI消息机制

    //WeakReference 弱引用,当WeakReference指向的对象是null时,gc就会回收这个对象p...

  • Handler消息机制解析

    Handler消息机制解析 Android提供用来更新UI的一套机制,也是一套消息处理机制,可以发送消息和处理消息...

  • 认识Handler消息机制

    什么是Handler消息机制? Handler是android提供用于更新UI的一套机制,也是消息处理机制。用于U...

  • 安卓机制Handler

    Handler是什么? Handler是更新UI界面的机制,也是消息处理机制,我们可以发送消息,也可以处理消息 为...

  • Android-Handler机制详解

    1、handler是什么? handler是更新UI界面的机制,也是消息处理的机制,我们可以发送消息,也可...

  • 高级UI<第一篇>:Handler机制(源码分析)

    Handler是更新UI界面的机制,也是消息处理的机制,我们可以发送消息,也可以处理消息。 (1)为什么要有Han...

  • handler机制和流程简单理解

    handler机制,即Android的消息处理机制,主要用于Android线程间通信,主线程更新UI,发送消息,处...

  • Handler

    1、handler是什么? handler是更新UI界面的机制,也是消息处理的机制,我们可以发送消息,也可以处理消...

  • Android线程与消息机制

    OUTLINE §UI线程 §Looper §消息机制 §线程交互 §AsyncTask §Activity/Se...

  • handler

    Handler机制:用于在工作线程与UI线程之间进行消息传递的机制。(因为工作线程不能直接操作UI组件的属性值) ...

网友评论

      本文标题:UI消息机制

      本文链接:https://www.haomeiwen.com/subject/nnsrbxtx.html