getApplicationContext()...强制关闭?

时间:2012-02-04 20:08:49

标签: android

我正在将服务绑定实现到我的应用程序中。但是,当我开始绑定到服务的活动时,应用程序将关闭。 Ive pin指出它是由于getApplicationContext()...继承我的代码以及它被调用和使用的地方...... 所有帮助表示赞赏。 感谢

 private LocalService mBoundService;
 private boolean mIsBound;


 Context context = getApplicationContext();



 private ServiceConnection mConnection = new ServiceConnection() {
  public void onServiceConnected(ComponentName className, IBinder service) {
    // This is called when the connection with the service has been
    // established, giving us the service object we can use to
    // interact with the service.  Because we have bound to a explicit
    // service that we know is running in our own process, we can
    // cast its IBinder to a concrete class and directly access it.
    mBoundService = ((LocalService.LocalBinder)service).getService();

    // Tell the user about this for our demo.
    Context context = getApplicationContext();
    Toast.makeText(context, "serviceconnected",
            Toast.LENGTH_SHORT).show();
}

public void onServiceDisconnected(ComponentName className) {
    // This is called when the connection with the service has been
    // unexpectedly disconnected -- that is, its process crashed.
    // Because it is running in our same process, we should never
    // see this happen.
    mBoundService = null;
    Toast.makeText(context, "serviceDisconnected",
            Toast.LENGTH_SHORT).show();
  }
};

    void doBindService() {
// Establish a connection with the service.  We use an explicit
// class name because we want a specific service implementation that
// we know will be running in our own process (and thus won't be
// supporting component replacement by other applications).
bindService(new Intent(context, 
        LocalService.class), mConnection, Context.BIND_AUTO_CREATE);
     mIsBound = true;
 }

  void doUnbindService() {
    if (mIsBound) {
    // Detach our existing connection.
    unbindService(mConnection);
    mIsBound = false;
}
}

  @Override
  protected void onDestroy() {
   super.onDestroy();
   doUnbindService();
 } 

1 个答案:

答案 0 :(得分:1)

为了将服务与活动绑定,而不是使用getApplicationContext(),您应该使用getBaseContext()this关键字