请看代码:package com.ewinfo.test;import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;public class Main extends Activity implements View.OnClickListener {
private iTService mService;
private ServiceConnection mConnection = new ServiceConnection() { @Override
public void onServiceConnected(ComponentName name, IBinder service)
{
// TODO Auto-generated method stub
mService=iTService.Stub.asInterface(service);
} @Override
public void onServiceDisconnected(ComponentName name)
{
// TODO Auto-generated method stub

}

};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView txt=(TextView)findViewById(R.id.hello);
        this.bindService(new Intent(iTService.class.getName()), mConnection, Context.BIND_AUTO_CREATE);//---1
        if(this.mService!=null)
        {
         try
{
if(this.mService.isStart())
txt.setText("Service is Start");
else
txt.setText("Service not Start");
} catch (RemoteException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
        }
        Button start=(Button)findViewById(R.id.start_service);
        start.setOnClickListener(this);
    }
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
this.startService(new Intent(this,TService.class));
}
}问题:如何在1处bind成功后让mService立即可用(即this.mService!=null成立)?

解决方案 »

  1.   

    onServiceConnected 方法不就是bind成功立马调用的吗?
      

  2.   

    貌似只有在
     public void onServiceConnected(ComponentName name, IBinder service)
            {
                // TODO Auto-generated method stub
                mService=iTService.Stub.asInterface(service);
            }
    中做后续工作了
      

  3.   

    顶三楼,还有就是可以在事件响应中用mservice
      

  4.   

    应该是在Start之后,Service才可以使用吧 
      

  5.   

    在onCreate()函数里面不一定已经bind service成功,但是bind service成功后系统会立即回调onServiceConnected()方法,因此对service的处理要等到nServiceConnected()之后
      

  6.   

    6楼正解。高焕堂老师形容得好:Don't call me, I'll call you back。
      

  7.   

    我也做过类似的测试。可能是进程同步的问题?你在onServiceConnected调用之后再操作mService就行了。
      

  8.   

    你可以设置第二个事件响应,这个时候mService就不为空了