我有一些关于Android绑定服务的细节。指南:,关于bindService(),说:
The `bindService()` method returns immediately without a value
但是这似乎不正确,因为方法的签名是
public abstract boolean bindService (Intent service, ServiceConnection conn, int flags)
其中返回的布尔值描述如下:
If you have successfully bound to the service, true is returned; false is
我通过使用以下命令启动服务:
private ServiceConnection _serviceConnection = new ServiceConnection() {...}
bindService(new Intent(this, MainService.class), _serviceConnection, Context.BIND_AUTO_CREATE);
我想“重启”服务。(让我们不要争论我为什么要这样做)我通过以下方式做到:
unbindService(_serviceConnection);
// Do some initialization on service
bin
我有带ViewPager的FragmenActivity,里面有3页。它们都将服务与数据绑定在一起。当我关闭所有片段中的活动时,启动函数是错误的。在那里我绑定了这些片段。
01-29 21:42:39.394 69
45-6945/ E/ActivityThread﹕ Activity Activity has leaked ServiceConnection Fragment$1@419ae7c8 that was originally bound here
android.app.ServiceConnectionLeaked: Activity Activity has leak
我的应用程序中有多个活动,每个活动都调用bindservice和unbindservice来获取数据。在第一个活动中,bindservice和unbindservice工作得很好。在第二个活动(重用相同的服务)中,绑定服务方法工作得很好,但unbindservice方法给出了异常:
IllegalArgumentException: Service not registered:
请帮帮忙。
绑定到服务的客户端代码,通常在活动类中;我试图将它移动到服务类,以便活动类尽可能干净和小。
也就是说,基本上是试图合并
绑定到服务的单行活动
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Bind to service with this line only:
ASe
我使用的是Robolectric 3.4.2,我需要测试两个服务之间的交互。
在我的测试中,我写了一个虚拟服务:
ShadowApplication.getInstance().setComponentNameAndServiceForBindService(
new ComponentName(SERVICE.getPackageName(), SERVICE.getClassName()),
new Binder() {
@Override
public IInterface query
这是我的服务班
public class BindService extends Service {
IBinder mBinder=new MyBinder();
MediaPlayer mediaPlayer;
int firstPlayed = 0;
public void seekTo(int progress) {
mediaPlayer.seekTo(progress);
}
public int getCurrentPostion() {