【发布时间】:2014-07-07 13:35:54
【问题描述】:
我有一个Activity B,我时不时地启动和停止它。每当我启动B 时,它都会绑定 到从MainActivity 开始的Service,并且在离开B 时将未绑定。
每次我再次显示B 时,它都会像这样绑定Service:
Intent musicIntent = new Intent(this, MusicService.class);
Bundle musicBundle = new Bundle();
musicBundle.putStringArrayList("playlist", pathList);
musicBundle.putInt("position", position);
musicIntent.putExtras(musicBundle);
getApplicationContext().bindService(musicIntent, mConnection,
BIND_AUTO_CREATE);
所以onBind() 或onRebind() 将被调用。
服务:
@Override
public void onRebind(Intent intent) {
super.onRebind(intent);
Bundle extras = intent.getExtras();
this.songPathList = extras.getStringArrayList("playlist"); //Is always the same
this.position = extras.getInt("position"); //Is always the same
this.isInitialzed = false;
}
但是,当我第一次绑定服务并将一些数据传递给它时,它是最终的。意图的数据永远不会改变。所以当onRebind() 被调用时,意图不会改变position 和songPathList。
为了更清楚,我第一次调用 B 并通过意图传递一些数据。 position 将设置为 5,songPathList 将设置为一些随机的 5 个字符串。
现在我离开B 并重新开始。这次将调用onRebind()。但是这次position 和songPathList 的值与以前不同。但是当我调试并检查onRebind() 中的值时,它们并没有改变。 position 仍然是 5。
我做错了什么?有谁知道为什么意图永远不会改变?
是的,当我再次启动B 时,position 具有不同的值。
【问题讨论】:
标签: java android android-intent service