From: Yuji Konishi Date: Sat, 16 Jul 2011 12:15:23 +0000 (+0900) Subject: TrainTwitterAdapterをサービスへ移行。次は別プロセス化 #25725 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=refs%2Fheads%2Fcache;p=train-delayed%2Fsource.git TrainTwitterAdapterをサービスへ移行。次は別プロセス化 #25725 --- diff --git a/workspace/TrainDelayed/AndroidManifest.xml b/workspace/TrainDelayed/AndroidManifest.xml index aaca99b..bdc39d5 100644 --- a/workspace/TrainDelayed/AndroidManifest.xml +++ b/workspace/TrainDelayed/AndroidManifest.xml @@ -19,8 +19,11 @@ - + + \ No newline at end of file diff --git a/workspace/TrainDelayed/bin/TrainDelayed.apk b/workspace/TrainDelayed/bin/TrainDelayed.apk index c219661..b802037 100644 Binary files a/workspace/TrainDelayed/bin/TrainDelayed.apk and b/workspace/TrainDelayed/bin/TrainDelayed.apk differ diff --git a/workspace/TrainDelayed/bin/classes.dex b/workspace/TrainDelayed/bin/classes.dex index c38c381..74fc522 100644 Binary files a/workspace/TrainDelayed/bin/classes.dex and b/workspace/TrainDelayed/bin/classes.dex differ diff --git a/workspace/TrainDelayed/bin/resources.ap_ b/workspace/TrainDelayed/bin/resources.ap_ index 7a63526..354b5e9 100644 Binary files a/workspace/TrainDelayed/bin/resources.ap_ and b/workspace/TrainDelayed/bin/resources.ap_ differ diff --git a/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java b/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java index 48fba2a..ccf43c7 100644 --- a/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java +++ b/workspace/TrainDelayed/src/com/td/TrainDelayedActivity.java @@ -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) { diff --git a/workspace/TrainDelayed/src/com/td/TrainTwitterAdapter.java b/workspace/TrainDelayed/src/com/td/TrainTwitterAdapter.java index 2f30974..31e29a9 100644 --- a/workspace/TrainDelayed/src/com/td/TrainTwitterAdapter.java +++ b/workspace/TrainDelayed/src/com/td/TrainTwitterAdapter.java @@ -10,19 +10,18 @@ import twitter4j.TwitterAdapter; import twitter4j.TwitterException; import twitter4j.TwitterMethod; import android.content.ContentValues; -import android.content.Context; import android.net.Uri; import com.td.db.Keyword; -import com.td.db.KeywordDao; +import com.td.service.TrainDelayedServiceImpl; import com.td.utility.DateUtil; import com.td.utility.Debug; public class TrainTwitterAdapter extends TwitterAdapter { - private Context context; + private TrainDelayedServiceImpl context; private Calendar cal; - public TrainTwitterAdapter(Context context) { + public TrainTwitterAdapter(TrainDelayedServiceImpl context) { this.context = context; } @@ -115,8 +114,11 @@ public class TrainTwitterAdapter extends TwitterAdapter { } private boolean filter(String text) { - List keywords = KeywordDao.getInstance().search(); - + List keywords = context.getKeywords(); + if (keywords == null){ + return false; + } + for (Keyword keyword : keywords) { if (text.indexOf(keyword.getText()) >= 0) { return true; diff --git a/workspace/TrainDelayed/src/com/td/db/MonitorDao.java b/workspace/TrainDelayed/src/com/td/db/MonitorDao.java index 5a3722b..dc339f2 100644 --- a/workspace/TrainDelayed/src/com/td/db/MonitorDao.java +++ b/workspace/TrainDelayed/src/com/td/db/MonitorDao.java @@ -46,14 +46,14 @@ public class MonitorDao { public void init(SQLiteDatabase db) { - Monitor monitor = new Monitor(600, 800); - int n = 1; - monitor.setWeek(n++, true); - monitor.setWeek(n++, true); - monitor.setWeek(n++, true); - monitor.setWeek(n++, true); - monitor.setWeek(n++, true); - add(db, monitor); +// Monitor monitor = new Monitor(600, 800); +// int n = 1; +// monitor.setWeek(n++, true); +// monitor.setWeek(n++, true); +// monitor.setWeek(n++, true); +// monitor.setWeek(n++, true); +// monitor.setWeek(n++, true); +// add(db, monitor); } public void start(SQLiteDatabase db) { diff --git a/workspace/TrainDelayed/src/com/td/service/Scheduler.java b/workspace/TrainDelayed/src/com/td/service/Scheduler.java index 70b4908..bc4ed50 100644 --- a/workspace/TrainDelayed/src/com/td/service/Scheduler.java +++ b/workspace/TrainDelayed/src/com/td/service/Scheduler.java @@ -7,14 +7,20 @@ import java.util.Comparator; import java.util.Date; import java.util.List; +import com.td.db.Keyword; +import com.td.db.KeywordDao; import com.td.db.Monitor; import com.td.db.MonitorDao; +import com.td.db.Train; +import com.td.db.TrainDao; import com.td.utility.DateUtil; import com.td.utility.Debug; public class Scheduler { private static Calendar cal = Calendar.getInstance(); private List[] list = null; + private List keywords = null; + private List trains = null; private Comparator comp = new Comparator(){ public int compare(Term t1, Term t2) { return t1.getFrom() - t2.getFrom(); @@ -25,9 +31,16 @@ public class Scheduler { } + public void init(){ + Debug.d(this, "start init"); + makeSchedule(); + makeTrains(); + makeKeywords(); + Debug.d(this, "end init"); + } + public long calcSchedule(long now){ Debug.d(this, "start"); - makeSchedule(); long t = nextSchedule(now); Debug.d(this, "end"); return t; @@ -92,13 +105,45 @@ public class Scheduler { if (list != null){ return; } - Debug.d(this, "update"); + Debug.d(this, "update schedule"); MonitorDao dao = MonitorDao.getInstance(); List mList = dao.search(); makeSchedule(mList); } + public void makeTrains(){ + if (trains != null){ + return; + } + Debug.d(this, "update trains"); + + TrainDao dao = TrainDao.getInstance(); + trains = dao.search(true); + } + + public void makeKeywords(){ + if (keywords != null){ + return; + } + Debug.d(this, "update keywords"); + + KeywordDao dao = KeywordDao.getInstance(); + keywords = dao.search(); + } + + public List[] getList() { + return list; + } + + public List getTrains() { + return trains; + } + + public List getKeywords() { + return keywords; + } + public void makeSchedule(List mList){ clearSchedule(); @@ -169,9 +214,4 @@ public class Scheduler { int to = (to1 > to2)? to1 : to2; return new Term(from, to); } - - public List[] getList() { - return list; - } - } diff --git a/workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java b/workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java index 5f306ee..9103574 100644 --- a/workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java +++ b/workspace/TrainDelayed/src/com/td/service/TrainDelayedServiceImpl.java @@ -19,8 +19,9 @@ import android.os.IBinder; import com.td.R; import com.td.TrainDelayedActivity; import com.td.TrainTwitterAdapter; +import com.td.db.DatabaseHelper; +import com.td.db.Keyword; import com.td.db.Train; -import com.td.db.TrainDao; import com.td.utility.Debug; import com.td.utility.EditPrefUtil; import com.td.utility.Util; @@ -29,13 +30,13 @@ public class TrainDelayedServiceImpl extends Service { public static final String PREF_SVS_DBFLG = "SVS_DBFLG"; public static final String ACTION = TrainDelayedServiceImpl.class .getSimpleName(); + private final IBinder binder = new Binder(); private static Scheduler scheduler = null; private EditPrefUtil pref = new EditPrefUtil(this); - // TODO - private AsyncTwitterFactory factory = new AsyncTwitterFactory(); + private static AsyncTwitterFactory factory = new AsyncTwitterFactory(); private AsyncTwitter twitter = factory.getInstance(); private TrainTwitterAdapter listener = new TrainTwitterAdapter(this); @@ -50,8 +51,13 @@ public class TrainDelayedServiceImpl extends Service { try { Debug.d(this, "run() " + id); - TrainDao trainDao = TrainDao.getInstance(); - List list = trainDao.search(true); + if (scheduler == null){ + return; + } + List list = scheduler.getTrains(); + if (list == null){ + return; + } Calendar cal = Calendar.getInstance(); listener.setCalender(cal); @@ -118,23 +124,25 @@ public class TrainDelayedServiceImpl extends Service { Debug.d(this, "id=" + id); synchronized (binder) { try { + int prefDBFlag = pref.getInt(PREF_SVS_DBFLG, 0); + if (!Util.toBoolean(prefDBFlag)){ + pref.put(PREF_SVS_DBFLG, 1); + pref.update(); + scheduler = null; + } + + if (scheduler == null){ + scheduler = new Scheduler(); + DatabaseHelper.init(getApplicationContext()); + } + scheduler.init(); schedule(-1); } catch (Exception e) { // TODO Debug.d(this, null, e); } } - - int prefDBFlag = pref.getInt(PREF_SVS_DBFLG, 0); - if (!Util.toBoolean(prefDBFlag)){ - pref.put(PREF_SVS_DBFLG, 1); - pref.update(); - scheduler = null; - } - if (scheduler == null){ - scheduler = new Scheduler(); - } long next = scheduler.calcSchedule(now); // ŽŸ‰ñ‹N“®“o˜^ @@ -190,4 +198,11 @@ public class TrainDelayedServiceImpl extends Service { // Ä“xƒNƒ‰ƒCƒAƒ“ƒg‚©‚çÚ‘±‚³‚ꂽÛ‚É onRebind ‚ðŒÄ‚яo‚³‚¹‚éê‡‚Í true ‚ð•Ô‚· return true; } + + public List getKeywords() { + if (scheduler == null){ + return null; + } + return scheduler.getKeywords(); + } }