【问题标题】:Start a service when activity is opened打开活动时启动服务
【发布时间】:2015-12-21 21:49:08
【问题描述】:

如何在打开活动时启动服务,我正在使用意图但服务根本没有启动。音乐是在打开某个页面时播放的,但根本没有运行任何服务。

这是我用来在 MainPage 类上启动服务的代码。

public class BackgroundMusic extends Service implements Application.ActivityLifecycleCallbacks, Runnable {

MediaPlayer player;

private static final Handler uiHandler = new Handler(Looper.getMainLooper());

@Override
public void onCreate() {
    super.onCreate();
    player = MediaPlayer.create(this, R.raw.backgroundmusic);
    player.setLooping(true);
    player.setVolume(100, 100);
    player.start();
    Intent BackgrndMusic = new Intent(this, MainPage.class);
    startService(BackgrndMusic);
    getApplication().registerActivityLifecycleCallbacks(this);
}

@Override
public void onDestroy() {
    super.onDestroy();
    // stop listening for activities
    getApplication().unregisterActivityLifecycleCallbacks(this);
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onActivityStarted(Activity activity) {
    // do not destroy this service
    uiHandler.removeCallbacks(this);
}

@Override
public void onActivityStopped(Activity activity) {
    // if an activity don't show up in 1 second, destroy this service
    uiHandler.postDelayed(this, 1000);
}

@Override
public void run() {
    // no more activity, destroy this service
    stopSelf();
}

@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
    Intent BackgrndMusic = new Intent(BackgroundMusic.this, MainPage.class);
    startService(BackgrndMusic);
}

@Override
public void onActivityResumed(Activity activity) {
    Intent BackgrndMusic = new Intent(BackgroundMusic.this, MainPage.class);
    startService(BackgrndMusic);
}

@Override
public void onActivityPaused(Activity activity) {
    Intent BackgrndMusic = new Intent(BackgroundMusic.this, MainPage.class);
    stopService(BackgrndMusic);
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

}

@Override
public void onActivityDestroyed(Activity activity) {
    Intent BackgrndMusic = new Intent(BackgroundMusic.this, MainPage.class);
    stopService(BackgrndMusic);
}

}

【问题讨论】:

  • 你能发布主页代码吗?
  • 主页面只是一个活动页面,我想在其中播放我的音乐。我在 BackgroundMusic 服务类中设置了音乐。
  • 对不起,我的意思是你能发布 BackgroundMusic 代码
  • 我已经为你编辑了整个代码
  • startService() 在哪里被调用?你如何开始你的Service

标签: android android-service


【解决方案1】:

使用

@Override
protected void onResume()
{
super.onResume();
startService(foo);
}

@Override
protected void onDestroy()
{
 super.onDestroy();
 StopService(foo);
}

【讨论】:

  • 如果我只想在打开一个活动时播放它怎么办?
  • 我认为您需要详细说明您要在应用程序中执行的操作。
  • 因此,当 MainPage 打开时,音乐应该会播放,并且应该在几页上继续播放而不会出现任何中断。以这种格式向我推荐了使用服务,我对其进行了编辑以显示整个 BackgroundMusic 类代码。
猜你喜欢
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多