我正在创建服务以在我的应用中播放声音。当应用程序以启动画面启动然后主菜单活动开始时音频启动。主菜单活动有4个按钮。我没有停止我的服务点击任何按钮(你可以在我的代码中看到),但当我在我的设备上运行我的应用程序时,点击任何按钮服务停止,当我从下一个活动回到这个。声音再次开始。我想在应用程序的最后一个活动上完成服务声音。
主菜单活动代码 -
private Button hist, typ, ben, exit;
Intent i, objIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addListenerOnButton();
}
public void addListenerOnButton()
{
hist = (Button) findViewById(R.id.hist);
hist.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startActivity(new Intent(MainActivity.this, History.class));
finish();
}
});
typ = (Button) findViewById(R.id.typ);
typ.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startActivity(new Intent(MainActivity.this, Types.class));
finish();
}
});
ben = (Button) findViewById(R.id.ben);
ben.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startActivity(new Intent(MainActivity.this, Benefits.class));
finish();
}
});
exit = (Button) findViewById(R.id.exit);
exit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startActivity(new Intent(MainActivity.this, EndSplash.class));
finish();
}
});
}
@Override
protected void onPause() {
super.onPause();
objIntent = new Intent(MainActivity.this, PlayAudio.class);
stopService(objIntent);
}
@Override
public void onBackPressed() {
super.onBackPressed();
objIntent = new Intent(MainActivity.this, PlayAudio.class);
stopService(objIntent);
}
@Override
public void onResume()
{
super.onResume();
objIntent = new Intent(MainActivity.this, PlayAudio.class);
startService(objIntent);
}
}
SplashScreen活动 -
TimerTask task;
Intent objIntent, intent;
Handler handler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
UtilClass.playing = true;
objIntent = new Intent(SplashScreen.this, PlayAudio.class);
startService(objIntent);
new Handler().postDelayed(csRunnable2, 5000);
}
Runnable csRunnable2 = new Runnable()
{
@Override
public void run()
{
intent = new Intent(SplashScreen.this, MainActivity.class);
startActivity(intent);
finish();
}
};
public void onBackPressed()
{
// myHandler.removeCallbacks(myRunnable);
objIntent = new Intent(this, PlayAudio.class);
stopService(objIntent);
finish();
return;
}
@Override
protected void onPause() {
super.onPause();
objIntent = new Intent(this, PlayAudio.class);
stopService(objIntent);
}
}
答案 0 :(得分:1)
每当您导航到另一个活动时,系统会调用您当前的活动onPause
,并且您已经在onPause
方法中停止了该服务。
您还需要在onPause
方法中注释停止服务的代码:
@Override
protected void onPause() {
super.onPause();
//objIntent = new Intent(MainActivity.this, PlayAudio.class);
//stopService(objIntent);
}
您也可以发布服务代码以获得更合适的答案,谢谢。
答案 1 :(得分:0)
请检查活动生命周期http://developer.android.com/training/basics/activity-lifecycle/index.html
当您从一个活动转移到另一个活动时,Onpause()和onResume()将会调用。在你的代码中你在Onpause()和onResume()中的启动和停止服务。