从服务检索数据到活动OnResume()

时间:2013-12-14 17:46:18

标签: c# android service xamarin.android xamarin

我现在已经坚持了一段时间了。我的活动使用活动ServiceName.PutExtra(name,value)中的OnPause()启动并向我的服务发送数据(DT start,DT finish,Char action),但它还需要读取相同的新值。

活动使用GPS记录设备何时移动以及何时移动,以及这些设备的开始和结束时间。

当我回到我的活动时OnResume()需要阅读服务当前记录的内容,继续此录制并停止服务。

我已经阅读了很多关于绑定服务的内容,但是无法使用带有解释的简单代码示例(源代码@Xamarin网站,android开发者网站,stackoverflow)来实现这一点

有人可以给我看一个代码,其中绑定在服务活动之间明确说明,以及如何从服务中获取数据到活动OnResume()??

我使用Xamarin和C#,但如果需要,我可以使用java代码

1 个答案:

答案 0 :(得分:1)

我已经很久没有使用它了(因为我现在正在使用LocalBroadcasts)所以我可以错过一些东西,但总的来说它会是这样的(在java中):

在活动中:

/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection mConnection = new ServiceConnection() {

public void onServiceConnected(ComponentName arg0, IBinder service) {
    LocalBinder binder = (LocalBinder) service;
    mStateChecker = binder.getService();
    mBound = true;

    Intent intent2 = getIntent();
    finish();
    startActivity(intent2); 
}


public void onServiceDisconnected(ComponentName arg0) {
     mBound = false;

     Intent intent2 = getIntent();
     finish();
     startActivity(intent2);

    }   
};




 //start the service & bind to it
    startService(new Intent(this, StateChecker.class));
    Intent intent = new Intent(this, StateChecker.class);
    bindService(intent, mConnection, Context.BIND_AUTO_CREATE); 

在服务中:

@Override
public IBinder onBind(Intent arg0) {
    return mBinder;
}

/**
 * Class used for the client Binder.  Because we know this service always
 * runs in the same process as its clients, we don't need to deal with IPC.
 */
public class LocalBinder extends Binder {
    StateChecker getService() {    //  StateChecker is the name of this class
        // Return this instance of LocalService so clients can call public methods
        return StateChecker.this;
    }
}