title: Android service android.os.BinderProxy error
body: <p>I have been trying to get this android service working but I can not figure out why I am getting this error.</p>
  
  <pre><code>05-13 12:13:36.203: ERROR/dalvikvm(7782): could not disable core file generation for   pid 7782: Operation not permitted
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782): FATAL EXCEPTION: main
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782): java.lang.ClassCastException: android.os.BinderProxy
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at whiskeymedia.com.GiantBombAppActivity$1.onServiceConnected(GiantBombAppActivity.java:69)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1064)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1081)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at android.os.Handler.handleCallback(Handler.java:587)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at android.os.Handler.dispatchMessage(Handler.java:92)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at android.os.Looper.loop(Looper.java:130)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at android.app.ActivityThread.main(ActivityThread.java:3806)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at java.lang.reflect.Method.invokeNative(Native Method)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at java.lang.reflect.Method.invoke(Method.java:507)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
  05-13 12:13:36.469: ERROR/AndroidRuntime(7782):     at dalvik.system.NativeStart.main(Native Method)
  05-13 12:13:45.234: ERROR/GlobalUnplugService(7116): plugged = true,mBatteryPlugged=true
  </code></pre>
  
  <p>GiantBombAppActivity:</p>
  
  <pre><code>package whiskeymedia.com;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import whiskeymedia.com.vo.Achievement;
  import android.app.ListActivity;
  import android.content.ComponentName;
  import android.content.Context;
  import android.content.Intent;
  import android.content.ServiceConnection;
  import android.graphics.Color;
  import android.os.Bundle;
  import android.os.IBinder;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.AdapterView;
  import android.widget.AdapterView.OnItemClickListener;
  import android.widget.ArrayAdapter;
  import android.widget.ListView;
  import android.widget.TextView;
  import android.widget.Toast;
  
  public class GiantBombAppActivity extends ListActivity {
    private ListView mListView;
  
    private AchievementDatabase achievementDatabase;
  
    private AchievementUpdateService s;
  
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      mListView = getListView();
      List&lt;Achievement&gt; achievements = new ArrayList&lt;Achievement&gt;();
      achievementDatabase = new AchievementDatabase(this);
      achievementDatabase.open();
      //achievementDatabase.resetDatabase();
      achievements = achievementDatabase.getAllAchievements();
  
      MyAdapter adapter = new MyAdapter(this, achievements);
      setListAdapter(adapter);
  
      List&lt;String&gt; achievementNames = new ArrayList&lt;String&gt;();
      for(Achievement achievement: achievements) {
        achievementNames.add(achievement.getAchievementName());
  
        mListView.setOnItemClickListener(new OnItemClickListener() {
          public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id){
            //When clicked show a toast with the textview text
            Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
          }
        });
  
        doBindService();
      }
    }
  
    private ServiceConnection mConnection = new ServiceConnection() {
  
      public void onServiceConnected(ComponentName className, IBinder binder) {
        s = ((AchievementUpdateService.MyBinder) binder).getService();
        Toast.makeText(GiantBombAppActivity.this, "Connected", Toast.LENGTH_SHORT).show();
      }
  
      public void onServiceDisconnected(ComponentName className) {
        s = null;
      }
    };
  
    void doBindService() {
      bindService(new Intent(this, AchievementUpdateService.class), mConnection, Context.BIND_AUTO_CREATE);
    }
  
    /**
    * Adapter class to use for the list
    */
    private static class MyAdapter extends ArrayAdapter&lt;Achievement&gt; {
  
      /**
      * Constructor
      * 
      * @param context The context
      * @param contacts The list of contacts
      */
      public MyAdapter(final Context context, final List&lt;Achievement&gt; achievements) {
        super(context, 0, achievements);
      }
  
      @Override
      public View getView(final int position, final View convertView, final ViewGroup parent) {
        View view = convertView;
        if (view == null) {
          view = LayoutInflater.from(getContext()).inflate(R.layout.list_item, null);
        }
  
        final TextView achiev = (TextView)view.findViewById(R.id.achievement);
        if (getItem(position).getAchievmentRarity().compareTo("common") == 0) {
          achiev.setTextColor(Color.GREEN);
        }
        else if (getItem(position).getAchievmentRarity().compareTo("uncommon") == 0) {
          achiev.setTextColor(Color.BLUE);
        }
        else if (getItem(position).getAchievmentRarity().compareTo("rare") == 0) {
          achiev.setTextColor(Color.MAGENTA);
        }
  
        achiev.setText(getItem(position).getAchievementName());
  
        final TextView game = (TextView)view.findViewById(R.id.game);
        game.setText(getItem(position).getGameName());
          return view;
        }
      }
    }
  }
  </code></pre>
  
  <p>Achievement update service:</p>
  
  <pre><code>package whiskeymedia.com;
  
  import java.io.IOException;
  import java.util.ArrayList;
  import java.util.List;
  
  import whiskeymedia.com.vo.Achievement;
  import android.app.Service;
  import android.content.Intent;
  import android.os.Binder;
  import android.os.IBinder;
  
  public class AchievementUpdateService extends Service{
  
    private AchievementDatabase achievementDatabase;
  
    private final IBinder mBinder = new MyBinder();
  
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
      HtmlParser htmlParser = new HtmlParser();
      try {
        List&lt;Achievement&gt; achievements= htmlParser.parseDocument();
        achievementDatabase.loadAchievements(achievements);
      } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      }
  
      return Service.START_NOT_STICKY;
    }
  
    @Override
    public IBinder onBind(Intent arg0) {
      return mBinder;
    }
  
    public class MyBinder extends Binder {
      AchievementUpdateService getService() {
      return AchievementUpdateService.this;
      }
    }
  
  }
  </code></pre>
  
  <p>Any idea what I am doing wrong?</p>