我用Java创建了一个服务,但它没有';不要在后台运行
我正在尝试用java创建一个简单的服务,它将在后台运行。我想在手机上播放一首歌,即使应用程序已关闭。我读了一些文章并观看了教程,但当我关闭应用程序时,我的服务仍然停止 1) 我更改了舱单我用Java创建了一个服务,但它没有';不要在后台运行,java,android,service,Java,Android,Service,我正在尝试用java创建一个简单的服务,它将在后台运行。我想在手机上播放一首歌,即使应用程序已关闭。我读了一些文章并观看了教程,但当我关闭应用程序时,我的服务仍然停止 1) 我更改了舱单 <service android:name="com.example.myapplication.ServiceSound" android:exported="true" android:enabled="true">
<service
android:name="com.example.myapplication.ServiceSound"
android:exported="true"
android:enabled="true">
</service>
这就是我在MainActivity.java中启动服务的方式
startService(new Intent(getBaseContext(),ServiceSound.class));
我想你需要广播接收机。 所以现在 1-创建广播接收器类并调用服务类
public class MyBroadcaseReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context,ServiceSound.class));
Log.e(TAG, "onReceive: BroadCast is started");
}
}
2-您的服务类定义了这个
public static String str_receiver = "Your_Package_Name.receiver";
在startCommand上开始您的广播课程
public int onStartCommand(Intent intent, int flags, int startId) {
player = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
player.start();
return START_STICKY;
Intent intent1 = new Intent(this,MyBroadcaseReceiver.class);
sendBroadcast(intent1);
return START_STICKY;
}
现在在MainActivity类中创建一个用于广播的对象
专用广播接收机代码>
内部onCreate()
定义对象
broadcaseceiver=新的MyBroadcaseCeiver()代码>
最后在MainActivity内调用onResume()
和onPause()
@Override
protected void onResume() {
super.onResume();
registerReceiver(broadcastReceiver, new IntentFilter(MyService.str_receiver));
}
别忘了在清单文件中调用广播接收器
<receiver android:name=".MyBroadcaseReceiver"></receiver>
您的android操作系统版本是什么?您需要前台服务,我如何使用前台服务?您可能遇到的问题是,即使在关闭应用程序后,仍会继续运行该服务。我不知道如何解决这个问题:
@Override
protected void onResume() {
super.onResume();
registerReceiver(broadcastReceiver, new IntentFilter(MyService.str_receiver));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(broadcastReceiver);
}
<receiver android:name=".MyBroadcaseReceiver"></receiver>