Przeglądaj źródła

修改程序定时方式为Alarm

Bitliker 8 lat temu
rodzic
commit
a82aaaa85f

+ 9 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -77,6 +77,7 @@ import com.core.xmpp.dao.FriendDao;
 import com.core.xmpp.listener.AuthStateListener;
 import com.core.xmpp.model.SignAutoLogEntity;
 import com.modular.appmessages.presenter.MessagePresenter;
+import com.modular.apptasks.presenter.AutoPresenter;
 import com.modular.login.activity.LoginActivity;
 import com.uas.appcontact.listener.ImStatusListener;
 import com.uas.appcontact.ui.fragment.ContactsFragment;
@@ -300,7 +301,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 				PreferenceUtils.putInt(MainActivity.NEW_FUNCTION_NOTICE, 1);
 			}
 		/*	else if (checkedId == R.id.main_tab_four) {
-                if (mGroupChatFragment == null) {
+		        if (mGroupChatFragment == null) {
 					mGroupChatFragment = new GroupChatFragment();
 				}
 				changeFragment(mGroupChatFragment, TAG_GROUP_CHAT);//群聊
@@ -571,6 +572,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 //        }
 //        dbManager.closeDB();
 		doHiTask();
+		autoPresenter = AutoPresenter.onCreate();
 		handler.post(new Runnable() {
 			@Override
 			public void run() {
@@ -581,7 +583,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 
 	}
 
-
+	private AutoPresenter autoPresenter;
 	private Handler handler = new Handler();
 	private Runnable runnable = new MyRunnable();
 	private Boolean firstRed = true;
@@ -722,7 +724,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 		BDAutoUpdateSDK.uiUpdateAction(this, new UICheckUpdateCallback() {
 			@Override
 			public void onCheckComplete() {
-               /* //发现新版本就初始化这个值保证下次“为UU评分”弹出,直至升级,对:就是这么流氓,叫你不升级我弹死你
+		       /* //发现新版本就初始化这个值保证下次“为UU评分”弹出,直至升级,对:就是这么流氓,叫你不升级我弹死你
                 BDAutoUpdateSDK.cpUpdateCheck(MainActivity.this,
                         new CPCheckUpdateCallback() {
 
@@ -869,6 +871,7 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 		UserDao.getInstance().updateUnLineTime(MyApplication.getInstance().mLoginUser.getUserId(), time);
 	}
 
+
 	@Override
 	protected void onDestroy() {
 		saveOfflineTime();
@@ -881,6 +884,9 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 		unregisterReceiver(mUserLogInOutReceiver);
 		screenListener.unregisterListener();
 		//移除广播接收
+		if (autoPresenter != null) {
+			autoPresenter.onDestroy();
+		}
 		super.onDestroy();
 	}
 
@@ -1045,7 +1051,6 @@ public class MainActivity extends BaseActivity implements ImStatusListener, NetW
 	}
 
 
-
 	private void initMsgUnReadTips(String userId) {// 初始化未读条数
 		// 消息未读条数累加
 		mMsgUnReadNum = FriendDao.getInstance().getMsgUnReadNumTotal(userId);

+ 10 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/AutoErpService.java

@@ -82,7 +82,9 @@ public class AutoErpService extends Service {
 	private boolean canWork = false;
 	private boolean canMission = false;
 	private boolean canDNotice = false;
-	private boolean isWorkRuning;
+	private boolean isWorkRuning = false;
+
+	private long updateTime;
 
 	private final String[] flags = {
 			AppConstant.CHANGE_WORK_TASK,//
@@ -269,6 +271,8 @@ public class AutoErpService extends Service {
 	}
 
 	private void signinWork(final WorkModel model) {
+		if (isWorkRuning) return;
+		isWorkRuning = true;
 		LogUtil.i("符合打卡时间");
 		MyApplication.getInstance().getBdLocationHelper().requestLocation();
 		OAHttpHelper.getInstance().postDelayed(new Runnable() {
@@ -285,6 +289,7 @@ public class AutoErpService extends Service {
 							getReckonAutoUtil().nextNotSigninTime(model);
 						}
 					});
+					isWorkRuning = false;
 				}
 			}
 		}, 1500);
@@ -296,6 +301,10 @@ public class AutoErpService extends Service {
 	 * @throws Exception
 	 */
 	private void reckonWork() {
+		if (System.currentTimeMillis() - updateTime < 30000) {
+			return;
+		}
+		updateTime = System.currentTimeMillis();
 		LogUtil.i("reckonWork");
 		ThreadUtil.getInstance().addTask(new Runnable() {
 			@Override

+ 1 - 1
app_modular/apptasks/src/main/AndroidManifest.xml

@@ -7,7 +7,7 @@
         android:label="@string/app_name"
         android:supportsRtl="true">
         <receiver
-            android:name=".service.AutoTaskReceiver"
+            android:name=".receiver.AutoTaskReceiver"
             android:enabled="true"
             android:exported="true">
             <intent-filter>

+ 51 - 0
app_modular/apptasks/src/main/java/com/modular/apptasks/presenter/AutoPresenter.java

@@ -0,0 +1,51 @@
+package com.modular.apptasks.presenter;
+
+import com.common.data.ListUtils;
+import com.common.thread.ThreadUtil;
+import com.core.dao.work.WorkModelDao;
+import com.core.model.WorkModel;
+
+import java.util.List;
+
+/**
+ * 创建新的自动任务管理类,由MainActivity控制,和MainActivity生命周期同步
+ * 1.定时任务由服务的循环变成Alarm模式,节约电
+ * Created by Bitliker on 2017/10/11.
+ */
+public class AutoPresenter {
+
+	public static AutoPresenter onCreate() {
+		return new AutoPresenter();
+	}
+
+	private AutoPresenter() {
+
+	}
+
+
+	public void onDestroy() {
+
+	}
+
+
+	/*计算打开*/
+	private void reckonWork(final boolean loadAble) {
+		ThreadUtil.getInstance().addTask(new Runnable() {
+			@Override
+			public void run() {
+				reckonWorkInThread(loadAble);
+			}
+		});
+	}
+
+	private void reckonWorkInThread(boolean loadAble) {
+		List<WorkModel> models = WorkModelDao.getInstance().queryAuto();
+		if (!ListUtils.isEmpty(models)) {
+
+		} else if (loadAble) {
+			//TODO 下拉数据
+		}
+	}
+
+
+}

+ 1 - 1
app_modular/apptasks/src/main/java/com/modular/apptasks/service/AutoTaskReceiver.java → app_modular/apptasks/src/main/java/com/modular/apptasks/receiver/AutoTaskReceiver.java

@@ -1,4 +1,4 @@
-package com.modular.apptasks.service;
+package com.modular.apptasks.receiver;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;

+ 8 - 3
app_modular/apptasks/src/main/java/com/modular/apptasks/util/AlarmUtil.java

@@ -9,7 +9,7 @@ import android.os.Build;
 import com.common.LogUtil;
 import com.common.config.BaseConfig;
 import com.common.data.DateFormatUtil;
-import com.modular.apptasks.service.AutoTaskReceiver;
+import com.modular.apptasks.receiver.AutoTaskReceiver;
 
 /**
  * AlarmManager.ELAPSED_REALTIME 表示闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3;
@@ -22,8 +22,13 @@ import com.modular.apptasks.service.AutoTaskReceiver;
 
 public class AlarmUtil {
 
-	public  static final int ID_WORK=101;
-	public  static final String ACTION_WORK="action_work";
+	/*打卡定时任务*/
+	public static final int ID_WORK = 101;
+	public static final String ACTION_WORK = "action_work";
+
+	/*外勤定时任务*/
+	public static final int ID_MISSION = 102;
+	public static final String ACTION_MISSION = "action_mission";
 
 	/**
 	 * 使用闹钟模式开启定时任务,定时回调