所以这就是我想要了解的内容。
我有这样的服务
public MyService extends Service {
public List<MyListener> listenersList = new ArrayList<>();
public void addListeners(MyListeners mylistener) {
listenersList.add(myListener);
}
public void eventAOccured(){
for ( MyListner mylistener : listeners ) {
mylistener.eventAOccured();
}
}
public void eventBOccured(){
for ( MyListner mylistener : listeners ) {
mylistener.eventBOccured();
}
}
}
这是我的MyListener接口活动
public Interface MyListener {
public eventAOccured();
public eventBOccured();
}
现在我们有三个活动
public Activity1 extends AppCompatActivity implements MyListener{
public static int myVariable = 1;
//starts service. For sake of brevity I am skipping this part.
MyService.add(this);
//on click of a button
startActivity( new Intent (Activity1.this, Activity2.class);
//Now I know this will put Activity1 in paused state
@Override
public void eventAOccured() {
//Call activity 3
}
@Override
public void eventBOccured() {
myVariable = 3;
}
}
这是通过单击活动1中的按钮调用的第二个活动。启动Activity2后,假设发生了eventB。现在,如果我从Activity1访问myVariable,它将是1还是3。
经过一段时间后我们说,eventA已经发生了。现在Activity3将会推出吗?
我知道暂停的活动意味着用户不再可见,但与服务的通信是否会继续?
答案 0 :(得分:2)
是的,暂停的活动仍然会收到事件,因为它在系统的后堆栈中并且不会被破坏。
答案 1 :(得分:0)
重写onStartCommand(Intent intent,int flags,int startId)和returen STRAT_STICKY。这将重启服务。 您可以查看以下示例。
公共类测试扩展服务{
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("Test Service ", "onStartCommand");
return START_STICKY; //It will restart Service in onPause/onDestroy
}
@Override
public void onCreate() {
super.onCreate();
//Do your operation
}
}