各位大哥:我最近做音乐播放器遇到了一个问题,描述如下:
我打开程序后进入播放列表的Activity(假设这个Activity叫做A),点击A中的某一首歌进入第二个Activity(假设这个Activity叫做B),B activity实现的功能是音乐播放的控制,在B activity中开了后台service实现音乐播放。现在的问题是:我在B中按返回键后,B activity就销毁了,即是说B会掉用onDestroy()这个生命周期函数,而当我在A中再点击某一首歌时,B又重新创建了,即是说B会调用onCreate()这个生命周期函数。请问:我要怎样才能在B中按返回键时B不会调用onDestroy(),而是只调用到onPause(),而这时在A中再一次点击一首歌时B就从onResume()开始呢?因为这样B中的数据就不会丢失了。请大侠们帮帮忙啊,这个问题困扰我很久了,什么singleTask的都试过,都不行。不知怎么办啊!!!!!谢谢,在线等。

解决方案 »

  1.   

    我觉得onDestroy肯定会被调用,这是Activity的声明周期模型已经明确了东西。至于数据,你可以保存起来,比如保存到sqlite中,当Activity重新被激活后,就去sqlite读取原先保存好的数据。
      

  2.   

    你的思路错了。
    想要保存数据,有很多种方法,最简单的就是把数据定义为static,或者封到单件类里。
      

  3.   

    试试这个方法 onSaveInstanceState()  把想保存的数据暂时放至在这 ,在通过 onRestoreInstanceState()获取里面的数据
      

  4.   

    可不可以在B类中写一个方法判断,你点击BACK的时候处理onPause();事件,,实在不行我就不知道了,,
      

  5.   

    你必须zai B重写BACK键,然后把B的启动模式设置为android:launchMode="singleInstance"
      

  6.   

    “我在B中按返回键后,B activity就销毁了”这个不对,B不一定会销毁,你不主动调用finish,系统不一定会立刻销毁你,除非在资源不够的情况下
      

  7.   

    你可以在B的 onpuase()中保存当前文件的上次播放位置,下次再进入继续播放。建议使用service,就不会有这些问题了