![](/img/trans.png)
[英]Which Context to use with MediaPlayer.create() in android?
[英]Determine what Context variable to use in MediaPlayer.create in Android
Android中MP3流MediaPlayer
疑难问题。 我已经完成了一些应用程序,但是由于某些原因,现在我重构了代码原因。
播放器活动中有一个服务调用:
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;
}
当在ImageView
Click侦听器上时,对playSong
方法的调用正常工作! 音乐开始播放。
但是,当仅从玩家活动onCreate
调用时-它会停止应用程序。 不知道为什么,但是很难理解在这里使用什么上下文参数。 我读过一些类似的文章和文档,但是雾气很大。
在这里如何确定第一个Context参数应该使用什么? 是否取决于我从哪里调用.playSong(Context, Uri)
? 如果是,怎么办? 对于Android中的新功能而言,上下文是非常抽象的,类文档本身并不能说明问题。
我尝试了许多选择,但我需要逻辑上的理由才能使用此功能以及如何确定应用程序为何停止运行。
getApplicationContext()
getBaseContext()
this
PlayerActivity.this
和别的。 但是,如果不了解,那是不对的。 也许错误在另一个地方。 但是没有服务电话,所有人都在工作。
我同意Context
以及何时使用哪种类型可能很难理解。 据我了解,通常在大多数情况下最好使用Activity
的Context
。 这些是我对此的想法,如果我对示例/事实有误,请有人纠正我。
在这里如何确定第一个Context参数应该使用什么? 是否取决于我从哪里调用.playSong(Context,Uri)? 如果是,怎么办?
是的,不一定。 从我的阅读中,您想使用最接近需要它的Object
的Context
...使用所需的最小Context
。
Activity
和Object
时会被破坏Activity
被破坏然后使用Activity
Context
(这里Player.this
)。 Context
使用Service
的Context
。 getApplicationContext()
您说您已经阅读了有关使用Context
文章,并且由于我不知道我不会发布大量链接。 然而,
这是关于使用getApplicationContext()的一个很好的SO答案。
也许错误在另一个地方。
如果您发布了您遇到的错误,那么也许我们可以更好地帮助您找到错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.