【问题标题】:Would background music be a separate background process? [closed]背景音乐会是一个单独的背景进程吗? [关闭]
【发布时间】:2014-07-11 19:04:38
【问题描述】:

这是一个关于进程与线程的澄清问题。我知道每个应用程序都将作为自己的独立进程运行,这意味着它有自己的 linux 进程 ID,并且进程由线程组成,即同时运行的代码片段。假设我启动了愤怒的小鸟,我知道应用程序本身有一个进程 ID。背景音乐是​​它自己的独立进程(由另一个播放音乐的应用程序启动)还是原始进程中的一个独立线程?

【问题讨论】:

  • 我不确定您为什么要问这个问题,也无法给出明确的答案。任何应用程序开发人员可以创建一个Service,它在单独的进程中运行以播放背景音乐(如果他们选择这样做的话)。这似乎没有必要,因为标准的 Android MediaPlayer 处理自己的线程,这意味着它可以在应用程序进程中存在的 ActivityService 中安全使用。
  • 很难区分所有定义。媒体播放器会是一个单独的进程(作为另一个应用程序吗?)
  • 请阅读developer.android.com/guide/components/… - 一个应用由在一个线程上运行的单个进程组成。如果您创建MediaPlayer 的实例,它将在同一线程上运行,但它也会创建自己的工作线程来处理音乐播放。

标签: android linux multithreading process


【解决方案1】:

我认为它只是在同一个应用程序中播放的媒体(MediaPlayer),可能在单独的线程中但不一定。

【讨论】:

  • 但如果它是一个媒体播放器,它不是必须运行自己的 linux 进程,因为它是一个单独的应用程序吗?
  • 我认为它本身不需要是一个单独的 linux 进程,因为 MediaPlayer 类只是提供了访问媒体文件、解码和播放以及控制它们所需的实现。你不觉得吗?
【解决方案2】:

背景音乐使用单独的线程。看例子。

公共类 Pro 扩展 Activity{

MediaPlayer ourSong;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pro);
    ourSong = MediaPlayer.create(Pro.this, R.raw.sou);
    // music started
    ourSong.start();
    Thread time = new Thread(){
        public void run(){
            try{
                sleep(2000);

            } catch(InterruptedException e){
                e.printStackTrace();
            }finally{
                Intent openMainActivity = new Intent("com.example.disd.Menu");
                startActivity(openMainActivity);
            }
        }
    };
    time.start();
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    ourSong.release();
    finish();
}

}

请参考链接http://www.codeproject.com/Articles/258176/Adding-Background-Music-to-Android-App

【讨论】:

猜你喜欢
  • 2011-05-30
  • 2011-04-07
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多