Android的绑定服务 - 如何开始?

问题描述 投票:0回答:1

我坚持让我的Android业务正常运行,确实需要一些帮助。

我开始了与Vogella对如何将服务绑定教程,最终尝试了几乎每一个它来到我的脑海里,并在网络上解决我的问题的办法。 “在onStart()”我的主要活动中被调用,没有异常(创建意图,“bindService()”)被抛出。但是,还没有服务已启动(apiService == NULL)。

我知道它不应该是很难找到工作,但遗憾的是我坚持这个了两个多小时了。任何形式的帮助,指针等真的赞赏。

[编辑]在服务类中设置断点没有被击中。此外,Log.d()项将不会在logcat的打印。

服务延伸Android.Service和实现我自己的界面:

public class APIService extends Service implements APICall{ 
private final IBinder binder = new APIBinder();
@Override
public void onCreate() {
    super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId){
    super.onStartCommand(intent, flags, startId);
    return Service.START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
    return binder;
}
public class APIBinder extends Binder{
    public APIService getService(){
        return APIService.this;
    }
}
//implementation of Interface...

主要活动/服务的绑定:

public class MainActivity extends Activity {
private APIService apiService = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
 @Override
 protected void onStart() {
    super.onStart();
    Intent serviceIntent = new Intent(this, APIService.class);
    bindService(serviceIntent, apiServiceConnection, Context.BIND_AUTO_CREATE);
 };
@Override
protected void onDestroy(){
    super.onDestroy();
    unbindService(apiServiceConnection);
}
private ServiceConnection apiServiceConnection = new ServiceConnection(){
    public void onServiceConnected(ComponentName className, IBinder binder) {
        APIBinder localBinder = (APIBinder)binder;
        apiService = localBinder.getService();
    }
    public void onServiceDisconnected(ComponentName className) {
        apiService = null;
    }
};
//click handler, etc...

清单文件条目:

<service android:name=".APIService"/>
android android-intent android-service
1个回答
0
投票

您应该添加

startService(serviceIntent);

之前

bindService(serviceIntent, apiServiceConnection, Context.BIND_AUTO_CREATE);
© www.soinside.com 2019 - 2024. All rights reserved.