質問: GPSを使った位置の特定Androidアプリを作っております。 登校経路から、指定されたメートル数外れるとSMSを発信します。 同じくこのアプリが親が持っているスマホから位置を送信しなさいという SMSメールを受け取るとGPSで位置を割り出し、SMSで現在地を送信するというものです。 親が持っているもう片方のスマホで、 このSMSを受け取ると地図に表示するというものです。 ただ、登校経路から外れるのを、何秒おきかにチェックしないとけないので スレッドのタイマーを使ってますが... タイマースレッドが、上手く作動しないのと トップの画面が固まります。どうしてか教えて頂くと助かります。 タイマーを3つほど同時に作動させて、違うリズムで処理をしますので 重ならないようにしています。 しかし、アプリの動作が止まって固まってしまいます。 減少としては、1秒ぐらいの間隔で、start1が作動しているようです。 ソース以下... start1(); start2(); public void start1() { timer.schedule(new TimerTask() { public void run() { play(); timer.cancel(); } private void play() { //ToDo //位置を割り出し、経路から外れていたらSMSで送信するクラス } }, 6 * 1000); } public void start2() { timer.schedule(new TimerTask() { public void run() { play(); timer.cancel(); } private void play() { //ToDo //SMSで位置確認メールなどが届いていたら、位置を割り出し、SMSで返答するクラス } }, 7 * 1000); }
回答: Threadに関してそれほど詳しいわけではないですが、Androidでは、 JavaのThreadクラスは使わないほうが良いようです。 Handlerとか、AsyncTaskと呼ばれるものがあるので、そちらで検討したほうがいいかも知れません。 細かいコードは私にはとても書けないのでそれぞれ検索してみてください。 android UIスレッドで調べるといろいろわかると思います。