OSDN Git Service

T29618
authorYuji Konishi <yuji.k64613@gmail.com>
Thu, 20 Sep 2012 15:49:09 +0000 (00:49 +0900)
committerYuji Konishi <yuji.k64613@gmail.com>
Thu, 20 Sep 2012 15:49:09 +0000 (00:49 +0900)
source/workspace/EverFolder/src/com/yuji/ef/SettingActivity.java
source/workspace/EverFolder/src/com/yuji/ef/task/NoteUpdateTask.java

index 3fd80d7..e58b6d6 100644 (file)
@@ -33,9 +33,11 @@ import com.yuji.ef.utility.AsyncTaskCommand;
 import com.yuji.ef.utility.BaseActivity;
 import com.yuji.ef.utility.Debug;
 import com.yuji.ef.utility.EvernoteUtil;
+import com.yuji.ef.utility.LockHandler;
+import com.yuji.ef.utility.LockListener;
 import com.yuji.ef.utility.OAuthUtil;
 
-public class SettingActivity extends BaseActivity {
+public class SettingActivity extends BaseActivity implements LockListener {
        private EditPrefUtil pref = new EditPrefUtil(this);
 
        private LinearLayout msgLayout;
@@ -54,7 +56,8 @@ public class SettingActivity extends BaseActivity {
 
        private boolean lock = false;
        private boolean isInit = true;
-
+       private boolean isInCycle = false;
+       
        private class NoteUpdatorReceiver extends BroadcastReceiver {
 
                @Override
@@ -147,6 +150,16 @@ public class SettingActivity extends BaseActivity {
        }
 
        @Override
+       public void sendLockResult(boolean b) {
+               lock = true;
+               
+               if (isInit) {
+                       isInit = false;
+               }
+               setStatus();
+       }
+       
+       @Override
        protected void onStart() {
                super.onStart();
        }
@@ -154,6 +167,12 @@ public class SettingActivity extends BaseActivity {
        @Override
        protected void onResume() {
                super.onResume();
+               isInCycle = true;
+
+               LockHandler handler = new LockHandler();
+               boolean isUnlock = false;
+               handler.lock(this, Constant.LOCK_UPDATE_NOTE, true, isUnlock);
+               lock = false;
 
                int updateTime = pref.getInt(Constant.PREF_UPDATE_TIME, 0);
 
@@ -168,10 +187,7 @@ public class SettingActivity extends BaseActivity {
                String updateDate = pref.get(Constant.PREF_UPDATE_DATETIME);
                updateDateText.setText(updateDate);
                
-               if (isInit) {
-                       setStatus();
-                       isInit = false;
-               }
+               setStatus();
        }
 
        @Override
@@ -204,7 +220,13 @@ public class SettingActivity extends BaseActivity {
                        }
                }
 
+               // ロック未取得でも解除する(ゴミ掃除)
+               LockDao lockDao = (LockDao) LockDao.getInstance();
+               lockDao.unlock(this, Constant.LOCK_UPDATE_NOTE);
+               lock = false;
+
                super.onPause();
+               isInCycle = false;
        }
 
        @Override
@@ -254,8 +276,9 @@ public class SettingActivity extends BaseActivity {
        }
 
        private void updateButton(boolean isAll) {
-               LockDao lockDao = (LockDao) LockDao.getInstance();
-               lock = lockDao.lock(this, Constant.LOCK_UPDATE_NOTE);
+               // #29618
+               //LockDao lockDao = (LockDao) LockDao.getInstance();
+               //lock = lockDao.lock(this, Constant.LOCK_UPDATE_NOTE);
 
                if (!lock) {
                        setStatus();
@@ -264,7 +287,10 @@ public class SettingActivity extends BaseActivity {
 
                pref.put(Constant.PREF_UPDATE_DATA, Constant.ON);
                pref.update();
-               
+
+               lock = false;
+               setStatus();
+
                NoteUpdateTask task = new NoteUpdateTask(this, true, true, isAll);
 
                AsyncTaskCommand command = new AsyncTaskCommand(this, task);
@@ -273,12 +299,13 @@ public class SettingActivity extends BaseActivity {
                command.setCancelable(false);
                command.setDialog(false);
                command.execute("");
-
-               setStatus();
        }
 
        public void done(int errorCode) {
-               lock = false;
+               // #29618
+               //lock = false;
+               lock = true;
+               
                setStatus();
        }
 
@@ -292,7 +319,7 @@ public class SettingActivity extends BaseActivity {
        }
 
        private void setStatus() {
-               if (lock) {
+               if (!lock) {
                        msgLayout.setVisibility(View.VISIBLE);
                        confirmMsg.setText(getString(R.string.settingUpdateMsg));
 
@@ -385,4 +412,5 @@ public class SettingActivity extends BaseActivity {
                }               
                msgLayout.setVisibility(View.GONE);
        }
+
 }
index 22e0f42..64b7231 100644 (file)
@@ -45,24 +45,27 @@ public class NoteUpdateTask implements AsyncTaskIF {
                        }
                        Debug.d(this, null, e);
                        
-                       LockDao lockDao = (LockDao) LockDao.getInstance();
-                       lockDao.unlock(SettingActivity.class, Constant.LOCK_UPDATE_NOTE);
+                       // #29618
+                       //LockDao lockDao = (LockDao) LockDao.getInstance();
+                       //lockDao.unlock(SettingActivity.class, Constant.LOCK_UPDATE_NOTE);
                        
                        throw e;
                } catch (Exception e) {
                        EfException.msg(com.yuji.ef.R.string.ErrorUpdate);
                        Debug.d(this, null, e);
 
-                       LockDao lockDao = (LockDao) LockDao.getInstance();
-                       lockDao.unlock(SettingActivity.class, Constant.LOCK_UPDATE_NOTE);
+                       // #29618
+                       //LockDao lockDao = (LockDao) LockDao.getInstance();
+                       //lockDao.unlock(SettingActivity.class, Constant.LOCK_UPDATE_NOTE);
                        
                        throw new EfException(EfError.SYSTEM);
                } catch (Throwable e) {
                        EfException.msg(com.yuji.ef.R.string.ErrorUpdate);
                        Debug.d(this, null, e);
        
-                       LockDao lockDao = (LockDao) LockDao.getInstance();
-                       lockDao.unlock(SettingActivity.class, Constant.LOCK_UPDATE_NOTE);
+                       // #29618
+                       //LockDao lockDao = (LockDao) LockDao.getInstance();
+                       //lockDao.unlock(SettingActivity.class, Constant.LOCK_UPDATE_NOTE);
                        
                        throw new EfException(EfError.SYSTEM);
                }
@@ -73,8 +76,9 @@ public class NoteUpdateTask implements AsyncTaskIF {
        }
 
        public void done(boolean isCancel) {
-               LockDao lockDao = (LockDao) LockDao.getInstance();
-               lockDao.unlock(SettingActivity.class, Constant.LOCK_UPDATE_NOTE);
+               // #29618
+               //LockDao lockDao = (LockDao) LockDao.getInstance();
+               //lockDao.unlock(SettingActivity.class, Constant.LOCK_UPDATE_NOTE);
 
                SettingActivity activity = getActivity();
                if (activity != null) {