Serviceを使いたい。はじめの一歩

目覚ましアラームや、定期的なサーバー通信とか、したいと思うのですが、Serviceについての記述がややこしいので、ちょっと自分メモを数回に分けてまとめておきます。

今回はbindと言う関数は無視します!serviceだけ。

 

まず、最初に

/*————–
サービスとは
————–*/

動き続ける、画面を持たない。つまりは、一度起動をしてしまうと、

サービス.stopSelf()

も利用ができるのですが、基本的には、とまらず、そこで動き続けるイメージです。

(かなりの付加がかかる場合には、stopしたいですが。。)

 

/*—————-
とりあえず、使ってみる。
—————–*/

serviceをとりあえず、使ってみます。

SpecialService.java

public class SpecialService extends Service {
 @Override
 public void onCreate() {
 Toast.makeText(this, "こんにちわ", Toast.LENGTH_LONG),show();
 super.onCreate();
 }
}

上記のサービスを作成して、manifest.xmlに下記を追加します。

<service android:name=".SpecialService"></service>

で、これを起動中のアクティビティを呼びます。

MainActivity.java

Intent intent = new Intent(this, SpecialService.class);
startService(intent);

上記で、動きました!!

 

/*——–
で??
——–*/

と言う状況になります。

実は、継続する動作に関して利用をする事に効果を発揮するのが、Serviceらしいです。

 

/*———————-
timerで継続させてみる。
———————–*/

※すいません。onStart()に書いたscheduleですが、タスクキラーとかにbanされてしまったあと実行される時にonCreateしか実行されないで、onStartは実行されない可能性もありそうなので、onCreateに書いてもいいかもしれない

private Toast _toast =  null;

@Override
public void onCreate() {
 _toast = Toast.makeText(this, "showをしないであらかじめつくっておく。", Toast.LENGTH_LONG);
 super.onCreate();
}

@Override
public void onStart(Intent intent, int startId) {
 schedule(10000);
 super.onStart(intent, startId);
}


public void schedule(long delay) {
 if (timer != null) {
 timer.cancel();
 }
 timer = new Timer();
 TimerTask timerTask = new TimerTask() {
 public void run() {
 _toast.show();
 }
 };
 timer.schedule(timerTask, delay);
}

こんな感じで作成をすると、10秒後に

「showをしないであらかじめつくっておく。」

とToastがでました。

ですが、これもActivityにもある機能です。

Serviceの動作を確認する為には、Srviceを起動した後に、アプリを終了します。

 

そうすると、10秒後に

「showをしないであらかじめつくっておく。」

が表示されました。

 

/*————————–
timerを繰り返し設定する
————————–*/

timer.schedule(timerTask, delay,delay);

とします。

private Toast _toast =  null;

@Override
public void onCreate() {
 _toast = Toast.makeText(this, "繰り返す。", Toast.LENGTH_LONG);
 super.onCreate();
}

@Override
public void onStart(Intent intent, int startId) {
 schedule(10000);
 super.onStart(intent, startId);
}


public void schedule(long delay) {
 if (timer != null) {
 timer.cancel();
 }
 timer = new Timer();
 TimerTask timerTask = new TimerTask() {
 public void run() {
 _toast.show();
 }
 };
 timer.schedule(timerTask, delay,delay);
}

毎10秒後とに「繰り返す。」が実装されます。
このServiceの機能をやめる為には、設定からアプリを終了するか、電源を落とすかになります。

 

ちょっと迷惑なアプリができてしまいますが。以上です。

 

一部不具合がありましたので、下記にて補完しております。

Serviceを使いたい。時間の管理をする。

  • written on 2011.12.09
  • category : Service

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑