首先plist里设置statusbar隐藏
之后新建一个全屏幕的UIWindow对象,属性需要设置一下
self.windowLevel = UIWindowLevelStatusBar + 1.0f;然后设置它的hidden属性为NO
此时这个window对象就会全屏幕,然后可以设置statusbar显示,再初始化rootController之类的,这样,当全屏幕的广告消失时,后面的界面都已经初始完成了
优先级反转的描述:
假设任务1,任务2,任务3;他们的优先级顺序分别为1 > 2 > 3。有一个稀缺资源S,S由一个信号量控制为互斥访问。
以上可以看出,任务2虽然比任务1优先级低,但是比任务1优先执行。也就是说任务1的优先级被降低到了任务3的级别。
分析:
由于稀缺资源S的独占性,任务3在申请到资源后,任务1必然会在任务3释放资源后才能执行完成。而任务2肯定会抢占任务3的执行。这个时候,要想任务1比任务2之前执行,有两种方法:任务3释放资源,任务2不能抢占任务3。
- 任务3释放资源。这条路走不通,因为独占资源没有操作完成就释放,要么回滚,要么出错。(X)
- 任务2不能抢占任务3。提升任务3的优先级高于任务2就可以了。(V)提高到多少?假如任务1和任务5共抢资源S,那么任务2、3、4都有可能抢去任务5的执行权,所以任务提升一定要和资源S被申请的最高优先级平等或者大于。对于有相同优先级的内核来说,任务5提升到任务1的优先级即可,对于优先级单一的内核,如ucos,就要提升到高一点。
解决方法:
有些歌曲的下载地址,无法获得歌曲的大小:但可以正常播放
player.reset();
player.setDataSource(currSoundFileUrl);
System.out.println("yuan网址:" + currSoundFileUrl);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.prepare();
soundLength = player.getDuration();
soundLength有时获取不到歌曲的大小,为0;
这时最好是下载到本地再读取本地歌曲,用完时将歌曲删除:
下面是下载该类歌曲的代码:
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
URL url = new URL("http://218.94.93.115:8002/audioservernews/news/file2/news/tqh/air/download/52579f60c8f27d5f81c3d8b2?rate=wma/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Accept-Encoding", "identity");
int lene = conn.getContentLength();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
int len = -1;
byte[] buf = new byte[1024 * 8];
File file = new File("/mnt/sdcard/hello.wma");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.seek(0);
while((len = bis.read(buf)) != -1){
raf.write(buf, 0, len);
}
System.out.println("hello>>" + lene);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
源码下载
return null;
}
}.execute();