package com.way.chat.activity; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import com.way.Constants; import com.way.chat.common.tran.bean.TranObject; /** * 自定义一个抽象的MyActivity类,每个Activity都继承他,实现消息的接收(优化性能,减少代码重复) * * @author way * */ public abstract class SuperView extends Activity { /** * 广播接收者,接收GetMsgService发送过来的消息 */ private BroadcastReceiver MsgReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { TranObject<?> msg = (TranObject<?>) intent .getSerializableExtra(Constants.MSGKEY); if (msg != null) {// 如果不是空,说明是消息广播 // System.out.println("MyActivity:" + msg); getMessage(msg);// 把收到的消息传递给子类 } else {// 如果是空消息,说明是关闭应用的广播 close(); } } }; /** * 抽象方法,用于子类处理消息, * * @param msg * 传递给子类的消息对象 */ public abstract void getMessage(TranObject<?> msg); /** * 子类直接调用这个方法关闭应用 */ public void close() { Intent i = new Intent(); i.setAction(Constants.ACTION); sendBroadcast(i); finish(); } @Override public void onStart() {// 在start方法中注册广播接收者 super.onStart(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Constants.ACTION); registerReceiver(MsgReceiver, intentFilter);// 注册接受消息广播 } @Override protected void onStop() {// 在stop方法中注销广播接收者 super.onStop(); unregisterReceiver(MsgReceiver);// 注销接受消息广播 } }