2 csh 34 csh_34 于 2012.09.26 16:56 提问

Android:屏幕方向改变后动作继续执行

我目前在设计一个音频播放文件,问题是如果把屏幕倾斜成水平或横排时候,程序就重启。现在就想倾斜屏幕后如何让程序继续运行,也不想让屏幕固定在横排或水平位置。

Public void Play(){
   AudioRenderer mr = new AudioRenderer();  
    mp = mr.AudioRenderer(filePath);
           }

private class AudioRenderer extends Activity {
private MediaPlayer AudioRenderer(String filePath) {    
    File location = new File(filePath);
Uri path = Uri.fromFile(location);
     mp= MediaPlayer.create(this, path);



}
return mp}

请求大家的帮助,谢谢!

5个回答

sasuke38
sasuke38   2012.09.28 11:31
已采纳

通常音乐播放器旋转屏幕之后都要切换布局xml 这个过程让系统自动去选择xml的话就不能进制程序重启了 不过有些人的做法是可以禁止程序重启然后再onconfigchanged方法中手动切换布局xml 我试了一下没有成功 所以我没有禁止程序重启 反正重启对我没影响 播放歌曲还有播放列表都是在service进行的 至于在activity中传过来的参数只要在用掉之后移除就行了

intent.removeExtra("musicFile");
gqs519
gqs519   2012.09.27 09:32
android:configChanges="orientation|keyboardHidden"

在AndroidManifest.xml中为Activity设置configChanges属性

yongyong_21
yongyong_21   2012.09.27 10:05
<activity android:name="YourActivity" android:configChanges="orientation|keyboardHidden"/>
lzyathere
lzyathere   2013.06.03 22:46

解决实现:
1.在 AnroidMainifest.xml 的 activity 元素中加入:
android:configChanges="orientation|keyboardHidden"

android:configChanges="orientation|keyboard|keyboardHidden"

表示在改变屏幕方向、弹出软件盘和隐藏软键盘时,不再去执行 onCreate() 方法,
而是直接执行 onConfigurationChanged() 。
如果不申明此段代码,按照Activity的生命周期,都会去执行一次 onCreate() 方法,
而 onCreate() 方法通常会在显示之前做一些初始化工作。

所以如果改变屏幕方向这样的操作都去执行 onCreate() 方法,就有可能造成重复的初始化,
降低程序效率是必然的了,而且更有可能因为重复的初始化而导致数据的丢失。
这是需要避免的!

2.权限声明:

API 中说该权限允许我们改变配置信息,但是我们在改变屏幕方向的程序中却并没有用到该权限,是不是相互冲突了呢?
这里我们可以这样认为,当我们声明该权限的的时候,
系统允许我们通过重写 activity 中的 onConfigurationChanged 方法来捕获和修改某些配置信息。

3.在 Java 源代码文件中重写 Activity 中的 onConfigurationChanged 方法:

sasuke38
sasuke38   2012.11.03 23:14

音乐播放器源码

详情请看这个简易播放器的源码 新手容易看懂

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!