OSDN Git Service

TrainTwitterAdapterをサービスへ移行。次は別プロセス化 #25725 cache
authorYuji Konishi <yuji.k64613@gmail.com>
Sat, 16 Jul 2011 12:15:23 +0000 (21:15 +0900)
committerYuji Konishi <yuji.k64613@gmail.com>
Sat, 16 Jul 2011 12:15:23 +0000 (21:15 +0900)
workspace/TrainDelayed/AndroidManifest.xml
workspace/TrainDelayed/bin/TrainDelayed.apk
workspace/TrainDelayed/bin/classes.dex
workspace/TrainDelayed/bin/resources.ap_
workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java
workspace/TrainDelayed/src/com/td/TrainTwitterAdapter.java
workspace/TrainDelayed/src/com/td/db/MonitorDao.java
workspace/TrainDelayed/src/com/td/service/Scheduler.java
workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java

index aaca99b..bdc39d5 100644 (file)
                <activity android:name=".HistoryConfActivity" />
                <activity android:name=".MonitorTimeActivity" />
                <activity android:name=".SearchWordActivity" />
-               
+
        <service android:enabled="true" android:name="com.td.service.TrainDelayedServiceImpl" />
+<!--           
+       <service android:enabled="true" android:name="com.td.service.TrainDelayedServiceImpl" android:process=":service" />
+-->
     </application>
        <uses-permission android:name="android.permission.INTERNET"></uses-permission>
 </manifest>
\ No newline at end of file
index c219661..b802037 100644 (file)
Binary files a/workspace/TrainDelayed/bin/TrainDelayed.apk and b/workspace/TrainDelayed/bin/TrainDelayed.apk differ
index c38c381..74fc522 100644 (file)
Binary files a/workspace/TrainDelayed/bin/classes.dex and b/workspace/TrainDelayed/bin/classes.dex differ
index 7a63526..354b5e9 100644 (file)
Binary files a/workspace/TrainDelayed/bin/resources.ap_ and b/workspace/TrainDelayed/bin/resources.ap_ differ
index 48fba2a..ccf43c7 100644 (file)
@@ -2,8 +2,6 @@ package com.td;
 
 import java.util.List;
 
-import twitter4j.AsyncTwitter;
-import twitter4j.AsyncTwitterFactory;
 import android.app.AlarmManager;
 import android.app.AlertDialog;
 import android.app.PendingIntent;
@@ -30,8 +28,6 @@ import com.td.utility.Util;
 public class TrainDelayedActivity extends BaseActivity {
        public static final String PREF_TRD_SFLG = "TRD_SFLG";
        
-       private AsyncTwitterFactory factory = new AsyncTwitterFactory();
-       private AsyncTwitter twitter = factory.getInstance();
        private TextView textView1;
        private Button button1;
        private Button button2;
@@ -58,9 +54,6 @@ public class TrainDelayedActivity extends BaseActivity {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
 
-               final TrainTwitterAdapter listener = new TrainTwitterAdapter(this);
-               twitter.addListener(listener);
-
                button1 = (Button) this.findViewById(R.id.button01);
                button1.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
index 2f30974..31e29a9 100644 (file)
@@ -10,19 +10,18 @@ import twitter4j.TwitterAdapter;
 import twitter4j.TwitterException;\r
 import twitter4j.TwitterMethod;\r
 import android.content.ContentValues;\r
-import android.content.Context;\r
 import android.net.Uri;\r
 \r
 import com.td.db.Keyword;\r
-import com.td.db.KeywordDao;\r
+import com.td.service.TrainDelayedServiceImpl;\r
 import com.td.utility.DateUtil;\r
 import com.td.utility.Debug;\r
 \r
 public class TrainTwitterAdapter extends TwitterAdapter {\r
-       private Context context;\r
+       private TrainDelayedServiceImpl context;\r
        private Calendar cal;\r
        \r
-       public TrainTwitterAdapter(Context context) {\r
+       public TrainTwitterAdapter(TrainDelayedServiceImpl context) {\r
                this.context = context;\r
        }\r
 \r
@@ -115,8 +114,11 @@ public class TrainTwitterAdapter extends TwitterAdapter {
        }\r
 \r
        private boolean filter(String text) {\r
-               List<Keyword> keywords = KeywordDao.getInstance().search();\r
-\r
+               List<Keyword> keywords = context.getKeywords();\r
+               if (keywords == null){\r
+                       return false;\r
+               }\r
+               \r
                for (Keyword keyword : keywords) {\r
                        if (text.indexOf(keyword.getText()) >= 0) {\r
                                return true;\r
index 5a3722b..dc339f2 100644 (file)
@@ -46,14 +46,14 @@ public class MonitorDao {
        \r
        public void init(SQLiteDatabase db)\r
        {\r
-               Monitor monitor = new Monitor(600, 800);\r
-               int n = 1;\r
-               monitor.setWeek(n++, true);\r
-               monitor.setWeek(n++, true);\r
-               monitor.setWeek(n++, true);\r
-               monitor.setWeek(n++, true);\r
-               monitor.setWeek(n++, true);\r
-               add(db, monitor);                       \r
+//             Monitor monitor = new Monitor(600, 800);\r
+//             int n = 1;\r
+//             monitor.setWeek(n++, true);\r
+//             monitor.setWeek(n++, true);\r
+//             monitor.setWeek(n++, true);\r
+//             monitor.setWeek(n++, true);\r
+//             monitor.setWeek(n++, true);\r
+//             add(db, monitor);                       \r
        }\r
 \r
        public void start(SQLiteDatabase db) {\r
index 70b4908..bc4ed50 100644 (file)
@@ -7,14 +7,20 @@ import java.util.Comparator;
 import java.util.Date;\r
 import java.util.List;\r
 \r
+import com.td.db.Keyword;\r
+import com.td.db.KeywordDao;\r
 import com.td.db.Monitor;\r
 import com.td.db.MonitorDao;\r
+import com.td.db.Train;\r
+import com.td.db.TrainDao;\r
 import com.td.utility.DateUtil;\r
 import com.td.utility.Debug;\r
 \r
 public class Scheduler {\r
        private static Calendar cal = Calendar.getInstance();\r
        private List<Term>[] list = null;\r
+       private List<Keyword> keywords = null;\r
+       private List<Train> trains = null;\r
        private Comparator<Term> comp = new Comparator<Term>(){\r
                public int compare(Term t1, Term t2) {\r
                        return t1.getFrom() - t2.getFrom();\r
@@ -25,9 +31,16 @@ public class Scheduler {
 \r
        }\r
        \r
+       public void init(){\r
+               Debug.d(this, "start init");\r
+        makeSchedule();\r
+               makeTrains();           \r
+               makeKeywords();         \r
+               Debug.d(this, "end init");\r
+       }\r
+       \r
        public long calcSchedule(long now){\r
                Debug.d(this, "start");\r
-               makeSchedule();\r
                long t = nextSchedule(now);\r
                Debug.d(this, "end");\r
                return t;\r
@@ -92,13 +105,45 @@ public class Scheduler {
                if (list != null){\r
                        return;\r
                }\r
-               Debug.d(this, "update");\r
+               Debug.d(this, "update schedule");\r
 \r
                MonitorDao dao = MonitorDao.getInstance();\r
                List<Monitor> mList = dao.search();\r
                makeSchedule(mList);\r
        }\r
        \r
+       public void makeTrains(){\r
+               if (trains != null){\r
+                       return;\r
+               }\r
+               Debug.d(this, "update trains");\r
+\r
+               TrainDao dao = TrainDao.getInstance();\r
+               trains = dao.search(true);              \r
+       }\r
+\r
+       public void makeKeywords(){\r
+               if (keywords != null){\r
+                       return;\r
+               }\r
+               Debug.d(this, "update keywords");\r
+\r
+               KeywordDao dao = KeywordDao.getInstance();\r
+               keywords = dao.search();\r
+       }\r
+\r
+       public List<Term>[] getList() {\r
+               return list;\r
+       }\r
+\r
+       public List<Train> getTrains() {\r
+               return trains;\r
+       }\r
+\r
+       public List<Keyword> getKeywords() {\r
+               return keywords;\r
+       }\r
+       \r
        public void makeSchedule(List<Monitor> mList){\r
                clearSchedule();\r
                \r
@@ -169,9 +214,4 @@ public class Scheduler {
                int to = (to1 > to2)? to1 : to2;\r
                return new Term(from, to);\r
        }\r
-\r
-       public List<Term>[] getList() {\r
-               return list;\r
-       }\r
-\r
 }\r
index 5f306ee..9103574 100644 (file)
@@ -19,8 +19,9 @@ import android.os.IBinder;
 import com.td.R;\r
 import com.td.TrainDelayedActivity;\r
 import com.td.TrainTwitterAdapter;\r
+import com.td.db.DatabaseHelper;\r
+import com.td.db.Keyword;\r
 import com.td.db.Train;\r
-import com.td.db.TrainDao;\r
 import com.td.utility.Debug;\r
 import com.td.utility.EditPrefUtil;\r
 import com.td.utility.Util;\r
@@ -29,13 +30,13 @@ public class TrainDelayedServiceImpl extends Service {
        public static final String PREF_SVS_DBFLG = "SVS_DBFLG";\r
        public static final String ACTION = TrainDelayedServiceImpl.class\r
                        .getSimpleName();\r
+       \r
        private final IBinder binder = new Binder();\r
        private static Scheduler scheduler = null;\r
 \r
        private EditPrefUtil pref = new EditPrefUtil(this);\r
 \r
-       // TODO\r
-       private AsyncTwitterFactory factory = new AsyncTwitterFactory();\r
+       private static AsyncTwitterFactory factory = new AsyncTwitterFactory();\r
        private AsyncTwitter twitter = factory.getInstance();\r
        private TrainTwitterAdapter listener = new TrainTwitterAdapter(this);\r
 \r
@@ -50,8 +51,13 @@ public class TrainDelayedServiceImpl extends Service {
                try {\r
                        Debug.d(this, "run() " + id);\r
 \r
-                       TrainDao trainDao = TrainDao.getInstance();\r
-                       List<Train> list = trainDao.search(true);\r
+                       if (scheduler == null){\r
+                               return;\r
+                       }\r
+                       List<Train> list = scheduler.getTrains();\r
+                       if (list == null){\r
+                               return;\r
+                       }\r
 \r
                        Calendar cal = Calendar.getInstance();\r
                        listener.setCalender(cal);\r
@@ -118,23 +124,25 @@ public class TrainDelayedServiceImpl extends Service {
                                Debug.d(this, "id=" + id);\r
                                synchronized (binder) {\r
                                        try {\r
+                                               int prefDBFlag = pref.getInt(PREF_SVS_DBFLG, 0);\r
+                                               if (!Util.toBoolean(prefDBFlag)){\r
+                                                       pref.put(PREF_SVS_DBFLG, 1);\r
+                                                       pref.update();\r
+                                                       scheduler = null;\r
+                                               }\r
+\r
+                                               if (scheduler == null){\r
+                                                       scheduler = new Scheduler();\r
+                                                       DatabaseHelper.init(getApplicationContext());\r
+                                               }\r
+                                               scheduler.init();\r
                                                schedule(-1);\r
                                        } catch (Exception e) {\r
                                                // TODO\r
                                                Debug.d(this, null, e);\r
                                        }\r
                                }\r
-\r
-                               int prefDBFlag = pref.getInt(PREF_SVS_DBFLG, 0);\r
-                               if (!Util.toBoolean(prefDBFlag)){\r
-                                       pref.put(PREF_SVS_DBFLG, 1);\r
-                                       pref.update();\r
-                                       scheduler = null;\r
-                               }\r
                                \r
-                               if (scheduler == null){\r
-                                       scheduler = new Scheduler();\r
-                               }\r
                                long next = scheduler.calcSchedule(now);\r
                                \r
                                // \8e\9f\89ñ\8bN\93®\93o\98^\r
@@ -190,4 +198,11 @@ public class TrainDelayedServiceImpl extends Service {
                // \8dÄ\93x\83N\83\89\83C\83A\83\93\83g\82©\82ç\90Ú\91±\82³\82ê\82½\8dÛ\82É onRebind \82ð\8cÄ\82Ñ\8fo\82³\82¹\82é\8fê\8d\87\82Í true \82ð\95Ô\82·\r
                return true;\r
        }\r
+\r
+       public List<Keyword> getKeywords() {\r
+               if (scheduler == null){\r
+                       return null;\r
+               }\r
+               return scheduler.getKeywords();\r
+       }\r
 }\r