adroid新手,service的一些问题

service类:
public class PhoneListenerService extends Service {

@Override
public IBinder onBind(Intent intent) {
    return null;
}
@Override
public void onCreate() {
    Log.e("TAG", "service onCreate()");
    super.onCreate();
    //电话服务管理
    TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    //监听电话状态
    manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
}

private PhoneStateListener listener = new PhoneStateListener() {
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
                    super.onCallStateChanged(state, incomingNumber);
        //打印电话状态改变信息
        Log.e("TAG", "onCallStateChanged state = " + state);
        switch (state) {
            case TelephonyManager.CALL_STATE_IDLE: 
                Log.e("TAG", "onCallStateChanged state = " + state);
                break;
            case TelephonyManager.CALL_STATE_RINGING:
                Log.e("TAG", "onCallStateChanged state = " + state);
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                Log.e("TAG", "onCallStateChanged state = " + state);
                break;
            default:
                break;
        }

    }

};

}

MainActivity:
public class MainActivity extends Activity {
private Button btnStartListening;
TelephonyManager manager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

    btnStartListening = (Button)findViewById(R.id.btnStartListening);
    btnStartListening.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            changeState();

        }
    });

}

public void changeState() {
    if (isServiceRunning(getApplicationContext(),"edwardlol.listenertest.PhoneListenerService")) {
        Log.e("TAG","is running, now stop");
        Intent i = new Intent(getApplicationContext(), PhoneListenerService.class);
        stopService(i);
        btnStartListening.setText("start");
    } else {
        Log.e("TAG","is not running, now start");
        Intent i = new Intent(getApplicationContext(), PhoneListenerService.class);
        startService(i);
        btnStartListening.setText("stop");
    }
}
private boolean isServiceRunning(Context mContext,String className) {
    boolean isRunning = false;
    ActivityManager activityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(30);
    if (!(serviceList.size()>0)) {
        return false;
    }
    for (int i=0; i<serviceList.size(); i++) {
        if (serviceList.get(i).service.getClassName().equals(className)) {
            isRunning = true;
            break;
        }
    }
    return isRunning;
}

如上,本想在mainactivity中开始和停止PhoneListenerService
但是停止了服务后打入电话还是能打印log信息,即service中的listener还在工作
而且每条log信息都会出现两次
请教下是什么问题?
刚开始接触android,问题弱请不要笑。。

老眼昏花了 两个问题已经解决

先把生命周期 写好,然后在向里面放程序

使用bindservice的话,要执行stop和unbind才能停止service