Android中MP3流MediaPlayer
的疑难问题。我已经完成了一些应用程序,但现在我重构代码原因有些原因。
在Player的活动中有一个服务调用:
mp3Service.playSong(getBaseContext(),url);
playSong方法包括:
public void playSong(Context c, String url) {
if (this.currenturl.equals(""))
{
this.mplayer = MediaPlayer.create(c, Uri.parse(url));
this.currenturl=url;
this.mplayer.start();
}
else
{
if (!this.currenturl.equals(url))
{
this.mplayer.stop();
//this.mplayer=null;
this.mplayer = MediaPlayer.create(c, Uri.parse(url));
this.mplayer.start();
this.currenturl=url;
} else
{
if (this.on==false)
this.mplayer.start();
};
};
this.on=true;
}
playSong
点击监听器时,对ImageView
方法的调用正常工作!音乐开始播放了。
但是,当简单地从玩家活动onCreate
打电话时 - 它会停止应用。
不知道为什么,但是很难理解这里使用的上下文参数。
我读过一些类似的文章和文档,但是有很多雾。
如何确定我应该在第一个Context参数中使用什么?
它取决于我呼叫.playSong(Context, Uri)
的位置吗?如果有,怎么样?
对于Android中的新内容,上下文非常抽象,类文档本身并没有说明它。
我尝试过很多选择,但我需要合理的理由来解释为什么要使用它以及如何确定应用停止的原因。
getApplicationContext()
getBaseContext()
this
PlayerActivity.this
和其他人。但不理解它是不对的。也许错误在另一个地方。 但没有服务电话,一切都在运作。
答案 0 :(得分:3)
我同意Context
以及何时使用哪种方式可能难以掌握。根据我的经验,在大多数情况下,通常最好使用Activity
的{{1}}。这些是我的想法,如果我对例子/事实的错误,请有人纠正我。
如何确定我应该在第一个Context参数中使用什么?它取决于我称之为.playSong(Context,Uri)的位置吗?如果是,怎么样?
是的而不一定。根据我的阅读,您希望使用最接近需要它的Context
的{{1}} ...使用所需的最小Context
。
Object
拨打电话,Context
将在Activity
被销毁后被销毁,请使用Object
Activity
(此处{{ 1}})。Activity
,请使用Context
的{{1}}。Player.this
你说你已经阅读过有关使用Context
的文章,因为我不知道哪些文章我不会发布一堆链接。然而,
Here is a good SO answer about using getApplicationContext()
也许错误发生在另一个地方。
如果您发布了正在收到的错误,那么我们可以帮助您更好地找到错误