| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734 |
- package com.sk.weichat.ui;
- import android.app.ActivityManager;
- import android.content.BroadcastReceiver;
- import android.content.ComponentName;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.content.ServiceConnection;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.IBinder;
- import android.os.Message;
- import android.os.PersistableBundle;
- import android.support.v4.app.Fragment;
- import android.support.v4.app.FragmentManager;
- import android.support.v4.app.FragmentTransaction;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.View;
- import android.widget.TextView;
- import com.android.volley.Response;
- import com.android.volley.VolleyError;
- import com.baidu.android.pushservice.PushConstants;
- import com.baidu.android.pushservice.PushManager;
- import com.baidu.autoupdatesdk.BDAutoUpdateSDK;
- import com.baidu.autoupdatesdk.UICheckUpdateCallback;
- import com.sk.weichat.AppConfig;
- import com.sk.weichat.MyApplication;
- import com.sk.weichat.NetWorkObservable.NetWorkObserver;
- import com.sk.weichat.R;
- import com.sk.weichat.bean.User;
- import com.sk.weichat.bean.circle.CircleMessage;
- import com.sk.weichat.bean.message.NewFriendMessage;
- import com.sk.weichat.broadcast.CardcastUiUpdateUtil;
- import com.sk.weichat.broadcast.MsgBroadcast;
- import com.sk.weichat.db.dao.FriendDao;
- import com.sk.weichat.db.dao.UserDao;
- import com.sk.weichat.helper.LoginHelper;
- import com.sk.weichat.ui.account.LoginActivity;
- import com.sk.weichat.ui.base.BaseActivity;
- import com.sk.weichat.ui.cardcast.AttentionFragment;
- import com.sk.weichat.ui.cardcast.FriendFragment;
- import com.sk.weichat.ui.cardcast.RoomFragment;
- import com.sk.weichat.ui.circle.BusinessCircleFragment;
- import com.sk.weichat.ui.erp.fragment.LinksManFragment;
- import com.sk.weichat.ui.erp.fragment.WorksFragment;
- import com.sk.weichat.ui.find.MyFriendFragment;
- import com.sk.weichat.ui.groupchat.GroupChatFragment;
- import com.sk.weichat.ui.me.MeFragment;
- import com.sk.weichat.ui.me.ScreenListener;
- import com.sk.weichat.ui.message.MessageFragment;
- import com.sk.weichat.ui.nearby.NearbyFragment;
- import com.sk.weichat.util.Constants;
- import com.sk.weichat.util.PreferenceUtils;
- import com.sk.weichat.util.ToastUtil;
- import com.sk.weichat.view.DivideRadioGroup;
- import com.sk.weichat.volley.ArrayResult;
- import com.sk.weichat.volley.FastVolley;
- import com.sk.weichat.volley.Result;
- import com.sk.weichat.volley.StringJsonArrayRequest;
- import com.sk.weichat.xmpp.CoreService;
- import com.sk.weichat.xmpp.CoreService.CoreServiceBinder;
- import com.sk.weichat.xmpp.ListenerManager;
- import com.sk.weichat.xmpp.listener.AuthStateListener;
- import java.util.HashMap;
- import java.util.List;
- /**
- * @项目名称: SkWeiChat-Baidu
- * @包名: com.sk.weichat.ui
- * @作者:王阳
- * @创建时间: 2015年10月16日 下午3:14:20
- * @描述: Fragment所寄宿的Activity
- * @SVN版本号: $Rev$
- * @修改人: $Author$
- * @修改时间: $Date$
- * @修改的内容: TODO
- */
- public class MainActivity extends BaseActivity implements NetWorkObserver, AuthStateListener {
- public final static String SIP_PASSWORD = "ms_2014_0528@sk!@#";
- public static String HASHCODE = "MainActivity";
- public static final String TIME_MAIN = "TIMEMAIN";
- public static long timeMin=-1;
- public static boolean isUnReadWork; //判断我的空间是否有新内容
- public final static int SIP_SERVER_PORT = 5060;// 端口
- public final static String EXTRAT_SIP_SESSION_ID = "SipSession";
- private static final String TAG_MESSAGE = "message";
- private static final String TAG_MY = "myfriend";
- private static final String TAG_NEARBY = "nearby";
- private static final String TAG_GROUP_CHAT = "group_chat";
- private static final String TAG_ME = "me";
- private static final String TAG_BusinessCircle = "my_BusinessCircle";
- /* UserCheck */
- private static final int MSG_USER_CHECK = 0x1;
- // 因为RadioGroup的check方法,会调用onCheckChange两次,用mLastFragment保存最后一次添加的fragment,防止重复add
- // fragment 出错
- private static final int RETRY_CHECK_DELAY_MAX = 30000;// 为成功的情况下,最长30s检测一次
- public static String SIP_DOMAIN = "120.24.211.24";
- public static String SIP_SERVER_HOST = "120.24.211.24";
- public String SIP_USERNAME = "10000072";
- private boolean mBind;
- private CoreService mXmppService;
- private FastVolley mFastVolley;
- //private BusinessCircleFragment mBusinessCircleFragment;
- private ActivityManager mActivityManager;
- // 界面组件
- private DivideRadioGroup mTabRadioGroup;
- /**
- * @注释:主界面Fragment
- */
- private Fragment mLastFragment;
- private MessageFragment mMessageFragment;
- private MyFriendFragment mMyFriendFragment;//我的朋友---相互关注,单项关注,房间
- private NearbyFragment mNearbyFragment;//附近
- private WorksFragment mWorksFragment;//工作
- private GroupChatFragment mGroupChatFragment;//群聊
- private MeFragment mMeFragment;//我
- private LinksManFragment mBusinessCircleFragment;
- private FriendFragment mFriend;// 互相关注
- private AttentionFragment mAttention;// 单向关注
- private RoomFragment mRoom;// 关注房间
- public static String BAIDU_PUSH = "BAIDUPUSH";
- private boolean mXmppBind;
- private CoreService mCoreService;
- private boolean isPause = true;// 界面是否暂停
- private ScreenListener screenListener;//锁屏开屏监听
- private int mRetryCheckDelay = 0;
- private Handler mUserCheckHander = new Handler() {
- public void handleMessage(Message msg) {
- if (msg.what == MSG_USER_CHECK) {
- if (mRetryCheckDelay < RETRY_CHECK_DELAY_MAX) {
- mRetryCheckDelay += 5000;
- }
- mUserCheckHander.removeMessages(RETRY_CHECK_DELAY_MAX);
- doUserCheck();
- }
- }
- };
- private int mImStatus = AuthStateListener.AUTH_STATE_NOT;
- private ServiceConnection mXmppServiceConnection = new ServiceConnection() {
- @Override
- public void onServiceDisconnected(ComponentName name) {
- mCoreService = null;
- }
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- mCoreService = ((CoreServiceBinder) service).getService();
- mImStatus = mCoreService.isAuthenticated() ? AuthStateListener.AUTH_STATE_SUCCESS : AuthStateListener.AUTH_STATE_NOT;
- }
- };
- private void hineColor(){
- }
- /**
- * @desc:主页菜单入口
- * @author:Administrator on 2016/1/26 10:03
- */
- private DivideRadioGroup.OnCheckedChangeListener mTabRadioGroupChangeListener = new DivideRadioGroup.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(DivideRadioGroup group, int checkedId) {
- Log.i("RadioGroupChecked", "执行...");
- if (checkedId == R.id.main_tab_one) {
- if (mMessageFragment == null) {
- mMessageFragment = new MessageFragment();
- }
- changeFragment(mMessageFragment, TAG_MESSAGE);//消息
- updateMessageTitle();
- } else if (checkedId == R.id.main_tab_two) {
- /*if (mMyFriendFragment == null) {
- mMyFriendFragment = new MyFriendFragment();
- }
- changeFragment(mMyFriendFragment, TAG_MY);
- getSupportActionBar().setTitle("通讯录");*/
- if (mBusinessCircleFragment == null) {
- mBusinessCircleFragment = new LinksManFragment();
- }
- changeFragment(mBusinessCircleFragment, TAG_BusinessCircle);//发现
- getSupportActionBar().setTitle("通讯录");
- } else if (checkedId == R.id.main_tab_three) { //点击工作选项
- if (mWorksFragment == null) {
- mWorksFragment = new WorksFragment();
- }
- changeFragment(mWorksFragment, TAG_NEARBY);//
- getSupportActionBar().setTitle(R.string.nearby);
- // PreferenceUtils.putLong(mContext, TIME_MAIN, timeMin);
- unWorkReadTV.setVisibility(View.GONE);
- }
- /* else if (checkedId == R.id.main_tab_four) {
- if (mGroupChatFragment == null) {
- mGroupChatFragment = new GroupChatFragment();
- }
- changeFragment(mGroupChatFragment, TAG_GROUP_CHAT);//群聊
- getSupportActionBar().setTitle(R.string.group_chat);
- } */
- else if (checkedId == R.id.main_tab_five) {
- if (mMeFragment == null) {
- mMeFragment = new MeFragment();
- }
- changeFragment(mMeFragment, TAG_ME);//我
- getSupportActionBar().setTitle(R.string.me);
- }
- }
- };
- private AppConfig config;
- private String mLoginUserId;
- public void changeRedZone(boolean b){
- if (b){
- unWorkReadTV.setVisibility(View.VISIBLE);
- }else {
- unWorkReadTV.setVisibility(View.GONE);
- }
- }
- private void requestMyBusiness() {
- if (config == null) {
- config = MyApplication.getInstance().getConfig();
- }
- if (mLoginUserId == null || mLoginUserId.length() <= 0) {
- mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
- }
- HashMap<String, String> params = new HashMap<String, String>();
- params.put("access_token", MyApplication.getInstance().mAccessToken);
- final BaseActivity mContext = MainActivity.this;
- StringJsonArrayRequest<CircleMessage> request = new StringJsonArrayRequest<CircleMessage>(
- config.MSG_LIST, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError arg0) {
- ToastUtil.showErrorNet(mContext);
- }
- }, new StringJsonArrayRequest.Listener<CircleMessage>() {
- @Override
- public void onResponse(ArrayResult<CircleMessage> result) {
- boolean success = Result.defaultParser(mContext, result, false);
- if (success) {
- List<CircleMessage> datas = result.getData();
- if (datas != null && datas.size() > 0) { // 没有更多数据
- long newTime=datas.get(0).getTime(); //获取最新时间
- long oldTime= PreferenceUtils.getLong(mContext, TIME_MAIN); //获取以前时间
- if (newTime>oldTime){//当有新消息
- Log.i("gongpengming","newTime="+newTime+"@@@ oldTime="+oldTime);
- unWorkReadTV.setVisibility(View.VISIBLE);
- timeMin=newTime;
- isUnReadWork = true;
- }else{
- unWorkReadTV.setVisibility(View.GONE);
- isUnReadWork = false;
- }
- } else {
- unWorkReadTV.setVisibility(View.GONE);
- isUnReadWork = false;
- }
- } else {
- unWorkReadTV.setVisibility(View.GONE);
- isUnReadWork = false;
- }
- }
- }, CircleMessage.class, params);
- if (mFastVolley == null) {
- mFastVolley = MyApplication.getInstance().getFastVolley();
- }
- mFastVolley.addDefaultRequest(HASHCODE, request);
- }
- /***********************
- * 未读数量的更新功能
- *****************/
- private Handler mUnReadHandler = new Handler();
- private TextView mMsgUnReadTv;
- private TextView unWorkReadTV;
- private int mMsgUnReadNum = 0;
- private BroadcastReceiver mUserLogInOutReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(LoginHelper.ACTION_LOGIN)) {
- User user = MyApplication.getInstance().mLoginUser;
- Intent startIntent = CoreService.getIntent(MainActivity.this, user.getUserId(), user.getPassword(), user.getNickName());
- startService(startIntent);
- // ToastUtil.showNormalToast(MainActivity.this, "开始Xmpp登陆");
- checkUserDb(user.getUserId());
- mTabRadioGroup.clearCheck();
- mTabRadioGroup.check(R.id.main_tab_one);
- } else if (action.equals(LoginHelper.ACTION_LOGOUT)) {
- MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_SIMPLE_TELPHONE;
- mCoreService.logout();
- cancelUserCheckIfExist();
- startActivity(new Intent(MainActivity.this, LoginActivity.class));
- // mFindRb.setChecked(true);
- MainActivity.this.finish();
- removeNeedUserFragment(false);
- } else if (action.equals(LoginHelper.ACTION_CONFLICT)) {
- // 改变用户状态
- MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_TOKEN_CHANGE;
- mCoreService.logout();
- // mFindRb.setChecked(true);
- removeNeedUserFragment(true);
- cancelUserCheckIfExist();
- // 弹出对话框
- startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
- if (Build.VERSION.SDK_INT == Build.VERSION_CODES.HONEYCOMB) {
- mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_WITH_HOME);
- } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) {
- mActivityManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
- }
- } else if (action.equals(LoginHelper.ACTION_NEED_UPDATE)) {
- // mFindRb.setChecked(true);
- removeNeedUserFragment(true);
- cancelUserCheckIfExist();
- // 弹出对话框
- startActivity(new Intent(MainActivity.this, UserCheckedActivity.class));
- } else if (action.equals(LoginHelper.ACTION_LOGIN_GIVE_UP)) {
- cancelUserCheckIfExist();
- MyApplication.getInstance().mUserStatus = LoginHelper.STATUS_USER_NO_UPDATE;
- mCoreService.logout();
- }
- }
- };
- private boolean mMsgNumNeedUpdate = false;
- private BroadcastReceiver mUpdateUnReadReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(MsgBroadcast.ACTION_MSG_NUM_UPDATE)) {
- int operation = intent.getIntExtra(MsgBroadcast.EXTRA_NUM_OPERATION, MsgBroadcast.NUM_ADD);
- int count = intent.getIntExtra(MsgBroadcast.EXTRA_NUM_COUNT, 0);
- mMsgUnReadNum = (operation == MsgBroadcast.NUM_ADD) ? mMsgUnReadNum + count : mMsgUnReadNum - count;
- updateMsgUnReadTv();
- } else if (action.equals(MsgBroadcast.ACTION_MSG_NUM_RESET)) {
- if (isPause) {// 等待恢复的时候更新
- mMsgNumNeedUpdate = true;
- } else {// 立即更新
- initMsgUnReadTips(MyApplication.getInstance().mLoginUser.getUserId());
- }
- }
- }
- };
- private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equals(CardcastUiUpdateUtil.ACTION_UPDATE_UI)) {
- if (mAttention != null) {
- mAttention.update();
- }
- if (mFriend != null) {
- mFriend.update();
- }
- if (mRoom != null) {
- mRoom.update();
- }
- }
- }
- };
- private ServiceConnection mServiceConnection = new ServiceConnection() {
- @Override
- public void onServiceDisconnected(ComponentName name) {
- mXmppService = null;
- }
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- mXmppService = ((CoreServiceBinder) service).getService();
- }
- };
- private IntentFilter fiter;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getSupportActionBar().setDisplayShowHomeEnabled(false);
- getSupportActionBar().setDisplayHomeAsUpEnabled(false);
- /**@注释:主页布局文件 */
- setContentView(R.layout.activity_main);
- SIP_USERNAME = MyApplication.getInstance().mLoginUser.getUserId();
- String host = mConfig.MeetingHost;
- SIP_DOMAIN = host == null ? "120.24.211.24" : host;
- SIP_SERVER_HOST = host == null ? "120.24.211.24" : host;
- Log.i("wang", "token:" + MyApplication.getInstance().mAccessToken);
- Log.i("wang", "usId:" + MyApplication.getInstance().mLoginUser.getUserId());
- //TODO 百度开始推送
- PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY, "iF9q4ruTpFwQ9x8pY6Edqm9G");
- int isPush = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.BAIDU_PUSH);
- if (isPush == 0) {
- Log.i("MainActivity", "关闭百度推送");
- PushManager.stopWork(this);
- }
- mActivityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
- if (savedInstanceState != null) {
- restoreState(savedInstanceState);
- }
- initView(savedInstanceState);//---
- // 注册网络改变回调
- MyApplication.getInstance().registerNetWorkObserver(this);
- //更新版本
- updateVersion();
- // 绑定监听
- ListenerManager.getInstance().addAuthStateChangeListener(this);
- // 注册消息更新广播
- IntentFilter msgIntentFilter = new IntentFilter();
- msgIntentFilter.addAction(MsgBroadcast.ACTION_MSG_NUM_UPDATE);
- msgIntentFilter.addAction(MsgBroadcast.ACTION_MSG_NUM_RESET);
- registerReceiver(mUpdateUnReadReceiver, msgIntentFilter);
- // 注册用户登录状态广播
- registerReceiver(mUserLogInOutReceiver, LoginHelper.getLogInOutActionFilter());
- // 绑定服务
- mXmppBind = bindService(CoreService.getIntent(), mXmppServiceConnection, BIND_AUTO_CREATE);
- // 检查用户的状态,做不同的初始化工作
- User loginUser = MyApplication.getInstance().mLoginUser;
- if (!LoginHelper.isUserValidation(loginUser)) {
- LoginHelper.prepareUser(this);
- }
- if (!MyApplication.getInstance().mUserStatusChecked) {// 用户状态没有检测,那么开始检测
- mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
- } else {
- if (MyApplication.getInstance().mUserStatus == LoginHelper.STATUS_USER_VALIDATION) {
- LoginHelper.broadcastLogin(this);
- } else {// 重新检测
- MyApplication.getInstance().mUserStatusChecked = false;
- mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
- }
- }
- registerReceiver(mUpdateReceiver, CardcastUiUpdateUtil.getUpdateActionFilter());
- mBind = bindService(CoreService.getIntent(), mServiceConnection, BIND_AUTO_CREATE);
- screenListener = new ScreenListener(this);
- screenListener.begin(new ScreenListener.ScreenStateListener() {
- @Override
- public void onScreenOn() {
- Log.d("wang", "MainActivity....开屏");
- }
- @Override
- public void onScreenOff() {
- Log.d("wang", "MainActivity....锁屏");
- }
- @Override
- public void onUserPresent() {
- Log.d("wang", "MainActivity....解锁");
- }
- });
- }
- public void updateVersion() {
- BDAutoUpdateSDK.uiUpdateAction(this, new UICheckUpdateCallback() {
- @Override
- public void onCheckComplete() {
- }
- });
- }
- private void doUserCheck() {
- if (!MyApplication.getInstance().isNetworkActive()) {
- return;
- }
- if (MyApplication.getInstance().mUserStatusChecked) {
- return;
- }
- LoginHelper.checkStatusForUpdate(this, new LoginHelper.OnCheckedFailedListener() {
- @Override
- public void onCheckFailed() {
- mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
- }
- });
- }
- private void cancelUserCheckIfExist() {
- mUserCheckHander.removeMessages(RETRY_CHECK_DELAY_MAX);
- cancelAll("checkStatus");
- }
- private void checkUserDb(final String userId) {
- // 检测用户基本数据库信息的完整性
- new Thread(new Runnable() {
- @Override
- public void run() {
- FriendDao.getInstance().checkSystemFriend(userId);
- initMsgUnReadTips(userId);
- }
- }).start();
- }
- /* 当注销当前用户时,将那些需要当前用户的Fragment销毁,以后重新登陆后,重新加载为初始状态 */
- private void removeNeedUserFragment(boolean startAgain) {
- FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();// 开始事物
- if (mMessageFragment != null) {
- fragmentTransaction.remove(mMessageFragment);
- }
- if (mMyFriendFragment != null) {
- fragmentTransaction.remove(mMyFriendFragment);
- }
- if (mWorksFragment != null) {
- fragmentTransaction.remove(mWorksFragment);
- }
- if (mGroupChatFragment != null) {
- fragmentTransaction.remove(mGroupChatFragment);
- }
- if (mMeFragment != null) {
- fragmentTransaction.remove(mMeFragment);
- }
- if (mBusinessCircleFragment != null) {
- fragmentTransaction.remove(mBusinessCircleFragment);
- }
- fragmentTransaction.commitAllowingStateLoss();
- mMessageFragment = null;
- mMyFriendFragment = null;
- mWorksFragment = null;
- mGroupChatFragment = null;
- mMeFragment = null;
- mBusinessCircleFragment = null;
- mLastFragment = null;
- if (startAgain) {
- Intent intent = new Intent(this, MainActivity.class);
- startActivity(intent);
- }
- }
- @Override
- protected void onStop() {
- super.onStop();
- saveOfflineTime();
- }
- private void saveOfflineTime() {
- long time = System.currentTimeMillis() / 1000;//将现在的时间存起来,
- Log.d("wang", "time_destory::" + time + "");
- PreferenceUtils.putLong(this, Constants.OFFLINE_TIME, time);
- MyApplication.getInstance().mLoginUser.setOfflineTime(time);
- UserDao.getInstance().updateUnLineTime(MyApplication.getInstance().mLoginUser.getUserId(), time);
- }
- @Override
- protected void onDestroy() {
- saveOfflineTime();
- MyApplication.getInstance().unregisterNetWorkObserver(this);
- ListenerManager.getInstance().removeAuthStateChangeListener(this);
- if (mXmppBind) {
- unbindService(mXmppServiceConnection);
- }
- unregisterReceiver(mUpdateUnReadReceiver);
- unregisterReceiver(mUserLogInOutReceiver);
- screenListener.unregisterListener();
- //移除广播接收
- super.onDestroy();
- }
- @Override
- public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
- super.onSaveInstanceState(outState, outPersistentState);
- saveOfflineTime();
- }
- private void restoreState(Bundle savedInstanceState) {
- mLastFragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
- mMessageFragment = (MessageFragment) getSupportFragmentManager().findFragmentByTag(TAG_MESSAGE);
- mMyFriendFragment = (MyFriendFragment) getSupportFragmentManager().findFragmentByTag(TAG_MY);
- mWorksFragment = (WorksFragment) getSupportFragmentManager().findFragmentByTag(TAG_NEARBY);
- mGroupChatFragment = (GroupChatFragment) getSupportFragmentManager().findFragmentByTag(TAG_GROUP_CHAT);
- mMeFragment = (MeFragment) getSupportFragmentManager().findFragmentByTag(TAG_ME);
- mBusinessCircleFragment = (LinksManFragment) getSupportFragmentManager().findFragmentByTag(TAG_BusinessCircle);
- }
- /**
- * @desc:RadioGroup设置监听
- * @author:Administrator on 2016/1/27 16:20
- */
- private void initView(Bundle savedInstanceState) {
- mTabRadioGroup = (DivideRadioGroup) findViewById(R.id.main_tab_radio_group);
- mTabRadioGroup.setOnCheckedChangeListener(mTabRadioGroupChangeListener);
- if (savedInstanceState == null) {
- mTabRadioGroup.check(R.id.main_tab_one);
- }
- mMsgUnReadTv = (TextView) findViewById(R.id.main_tab_one_tv);
- unWorkReadTV = (TextView) findViewById(R.id.main_tab_three_tv);
- }
- private void changeFragment(Fragment addFragment, String tag) {
- FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();// 开始事物
- if (mLastFragment == addFragment) {
- return;
- }
- if (mLastFragment != null && mLastFragment != addFragment) {// 如果最后一次加载的不是现在要加载的Fragment,那么僵最后一次加载的移出
- fragmentTransaction.detach(mLastFragment);
- }
- if (addFragment == null) {
- return;
- }
- if (!addFragment.isAdded())// 如果还没有添加,就加上
- fragmentTransaction.add(R.id.main_content, addFragment, tag);
- if (addFragment.isDetached())
- fragmentTransaction.attach(addFragment);
- mLastFragment = addFragment;
- fragmentTransaction.commitAllowingStateLoss();
- }
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.addCategory(Intent.CATEGORY_HOME);
- startActivity(intent);
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
- @Override
- public void onAuthStateChange(int authState) {
- mImStatus = authState;
- if (mTabRadioGroup.getCheckedRadioButtonId() == R.id.main_tab_one) {
- updateMessageTitle();
- }
- }
- /**
- * 更改消息在线不在线的状态
- * msg_online>消息(在线) msg_offline>消息(离线) msg_connect">消息(连接中)
- */
- private void updateMessageTitle() {
- if (mImStatus == AuthStateListener.AUTH_STATE_NOT) {
- getSupportActionBar().setTitle(R.string.msg_offline);
- } else if (mImStatus == AuthStateListener.AUTH_STATE_ING) {
- getSupportActionBar().setTitle(R.string.msg_connect);
- } else if (mImStatus == AuthStateListener.AUTH_STATE_SUCCESS) {
- getSupportActionBar().setTitle(R.string.msg_online);
- }
- }
- @Override
- public void onNetWorkStatusChange(boolean connected) {
- // 当网络状态改变时,判断当前用户的状态,是否需要更新
- if (connected) {
- if (!MyApplication.getInstance().mUserStatusChecked) {
- mRetryCheckDelay = 0;
- mUserCheckHander.sendEmptyMessageDelayed(MSG_USER_CHECK, mRetryCheckDelay);
- }
- }
- }
- @Override
- protected void onResume() {
- super.onResume();
- isPause = false;
- if (mMsgNumNeedUpdate) {
- initMsgUnReadTips(MyApplication.getInstance().mLoginUser.getUserId());
- }
- requestMyBusiness();
- }
- @Override
- protected void onPause() {
- super.onPause();
- isPause = true;
- }
- private void initMsgUnReadTips(String userId) {// 初始化未读条数
- // 消息未读条数累加
- mMsgUnReadNum = FriendDao.getInstance().getMsgUnReadNumTotal(userId);
- mUnReadHandler.post(new Runnable() {
- @Override
- public void run() {
- updateMsgUnReadTv();
- }
- });
- }
- private void updateMsgUnReadTv() {
- if (mMsgUnReadNum > 0) {
- mMsgUnReadTv.setVisibility(View.VISIBLE);
- String numStr = mMsgUnReadNum >= 99 ? "99+" : mMsgUnReadNum + "";
- mMsgUnReadTv.setText(numStr);
- } else {
- mMsgUnReadTv.setVisibility(View.INVISIBLE);
- }
- }
- public void exitMucChat(String toUserId) {
- if (mCoreService != null) {
- mCoreService.exitMucChat(toUserId);
- }
- }
- public void sendNewFriendMessage(String toUserId, NewFriendMessage message) {
- if (mBind && mXmppService != null) {
- mXmppService.sendNewFriendMessage(toUserId, message);
- }
- }
- /**
- * 获得fragment对象
- *
- * @return
- */
- public BusinessCircleFragment getBusinessCircleFragment() {
- FragmentManager sfmanager = getSupportFragmentManager();
- return (BusinessCircleFragment) sfmanager.findFragmentByTag(TAG_BusinessCircle);
- }
- }
|