package com.android_mvc.framework.bat;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
/**
* 端末起動時にサービスを自動開始させるためのクラス。
* @author id:language_and_engineering
*
*/
public abstract class BaseOnBootReceiver extends BroadcastReceiver
{
// バッチ側の別スレッドからToastを表示したい時などのために
protected Handler handlerMainThread = null;
// ブロードキャストインテント検知時
@Override
public void onReceive(final Context context, Intent intent)
{
// 端末起動時?
if( Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction()))
{
// メインスレッドでHandlerを生成・保持しておく
handlerMainThread = new Handler();
// 別スレッドで処理を実行
new Thread(new Runnable(){
@Override
public void run()
{
onDeviceBoot(context);
}
}).start();
}
// NOTE:
// ・このメソッド終了時点でこのオブジェクトは消滅
// ・このメソッドはメインスレッドで呼ばれ,10秒以上の長い処理は禁物
}
/**
* 端末起動時に呼ばれるメソッド。
* メインスレッド上ではないので,実行時間の心配はない。
*/
protected abstract void onDeviceBoot(Context context);
/**
* メインスレッドで生成されたハンドラを返す。
*/
protected Handler getHandler()
{
return handlerMainThread;
}
}