Handler
связан с конкретным потоком, поэтому до тех пор, пока вы создаете его в потоке пользовательского интерфейса, все, что вам нужно, это делиться обработчиком. Я бы поставил твой обработчик в мой Application
класс. И вы можете положить туда целую Messenger
, если хотите. Затем вы можете получить доступ к обработчику в любой деятельности через ((MyApplication)getApplication()).getHandler()
. Когда действие начинается или приостанавливается, вы можете зарегистрировать его как обратный вызов.
Так что-то вроде этого
public class MyApplication extends Application {
Handler h = new Handler() {
public void handleMessage(Message m) {
if (realCallback!=null) {
realCallback.handleMessage(m);
}
}
};
Handler.Callback realCallback=null;
......
public Handler getHandler() {
return h;
}
public void setCallback(Handler.Callback c) {
realCallback = c;
}
}
В любой деятельности, требующей получения запросов через мессенджер
public class MyActivity extends Activity implements Handler.Callback
......
public void onStart() {
((MyApplication)getApplication()).setCallback(this);
}
public void onPause() {
((MyApplication)getApplication()).setCallback(null);
}
public void handleMessage(Message msg) {
//.... Do stuff ....
}
}
Это всего лишь идея. Возможно, вам придется настроить его под свои нужды.
И не забудьте установить MyApplication
имя в AndroidManifest.xml