2013-12-14 4 views
0

Я некоторое время задерживался на проблеме. Моя активность начинается и отправляет данные (начало DT, DT finish, Char action) на мою услугу с использованием ServiceName.PutExtra(name,value) в действии OnPause(), но также необходимо читать новые значения для того же самого.получение данных из службы в действие OnResume()

Активность использует GPS для записи, когда устройство движется, а когда нет, и запускает и заканчивает время.

Когда я возвращаюсь к своей деятельности OnResume() необходимо прочитать информацию о том, что служба заносит в настоящий момент, продолжить эту запись и остановить службу.

Я много читал о привязке службы, но не могу получить эту работу, используя простые примеры кода с пояснениями (соерсед @ сайт Xamarin, Android разработчиков сайта, StackOverflow)

Может кто-то показать мне код где привязка четко указывается между служебной деятельностью и как получить данные из службы в действие OnResume() ??

Я работаю с Xamarin и C#, но я могу адаптировать из кода Java, если это необходимо

ответ

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; 
    } 
} 
+0

Цените помощь, но не можете заставить ее работать правильно для меня .... глядя на простое привязку к ней без обмена данными (сохраняйте службу в активном состоянии, пока идет работа), и используя трансляции для передачи данных. – bbbwex

Смежные вопросы