问题:
用bindService绑定一个Service,程序执行bindService后,conn并未执行onServiceConnected接口;
说明:
bindService用于绑定一个服务。这样当bindService(intent,conn,flags)后,就会绑定一个服务。这样做可以获得这个服务对象本身;另外一个类似的方法startService(intent)只能启动服务。
示例:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serviceIntent = new Intent(this, AudioService.class);
bindService(serviceIntent, Connection, BIND_AUTO_CREATE);
}
@Override
protected void onDestroy() {
super.onDestroy();
unbindService(Connection);
}
private ServiceConnection Connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
audioService = ((AudioService.ServiceBinder) service).getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
audioService = null;
}
};
}
解决:
在AndroidManifest.xml里面必须优先注册需要绑定的Service;
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.example.MainActivity.AudioService" /> 这里必须有线注册Service
</application>