首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绑定到活动的服务

绑定到活动的服务
EN

Stack Overflow用户
提问于 2010-05-12 04:55:51
回答 1查看 901关注 0票数 2

这是我的代码:

代码语言:javascript
复制
public class MainActivity extends Activity {
    private ComponentName mService;
    private Servicio serviceBinder;

    private ServiceConnection mConnection = new ServiceConnection() {
           public void onServiceConnected(ComponentName className, IBinder service) {
             serviceBinder = ((Servicio.MyBinder)service).getService();
           }

           public void onServiceDisconnected(ComponentName className) {
             serviceBinder = null;
           }
        };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Intent bindIntent = new Intent(this, Servicio.class);
        bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE);
    }

    @Override
    protected void onStart() {
        serviceBinder.somethingThatTakesTooMuch();
        super.onStart();
    }



public class Servicio extends Service {
    private final IBinder binder = new MyBinder();

    @Override
            public IBinder onBind(Intent intent) {
    return binder;
    }

    public int somethingThatTakesTooMuch() {
        return 1;
    }

    public class MyBinder extends Binder {
          Servicio getService() {
            return Servicio.this;
          }
    }

当我运行它时,它会在下面的代码行中得到一个NullPointerException:

代码语言:javascript
复制
serviceBinder.somethingThatTakesTooMuch();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-12 04:58:19

在完成与服务的连接之前,正在调用您的onStart。它不是即时的。

只有在您的onServiceConnected被调用后,您才能保证服务已连接。只有这样,您才能在serviceBinder上调用方法。

尝试在serviceBinder = ((Servicio.MyBinder)service).getService();之后的线路上调用serviceBinder.somethingThatTakesTooMuch()

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2814375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档