[确定,这是我的代码,即使关闭应用程序,我也试图创建正在运行的服务。
在主要活动中,我创建了一个新按钮,并调用startMyService()以启动服务,如下所示:
public void startMyService(View view) {
Intent intent = new Intent(MainActivity.this, MyService.class);
startService(intent);
}
Service类很简单:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("MyService", "service is running");
final Uri uri = Settings.System.DEFAULT_RINGTONE_URI;
final Context x =(Context) MyService.this;
new Thread(new Runnable() {
@Override
public void run() {
MediaPlayer player = MediaPlayer.create(x,uri);
player.setLooping(true);
player.start();
}
}).start();
Toast.makeText(getApplicationContext(), "Service is running", Toast.LENGTH_LONG).show();
return START_STICKY;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "service done", Toast.LENGTH_SHORT).show();
Log.e("MyService", "service done");
}
}
当然,我已将服务添加到清单中
<service android:name=".MyService" android:exported="false" android:description="@string/service_description" />
现在运行后,我按下了按钮以启动服务,然后关闭该活动,我认为音乐将在后台播放,但是在关闭该活动之后它就停止了。
如何解决此问题?如何使服务仍然运行,以及如何在Android OS销毁服务后使其再次运行?
我知道关于android服务和START_STICKY的话题太多了>
但是,如您所见,这在上面的代码中不起作用,为什么?
注意:这不是在后台播放音乐,我之所以使用播放音乐,是因为这是了解何时停止服务的最简单方法,例如,这是关于如何使服务保持在后台运行的功能,例如,以执行某些任务,例如跟踪服务器中的数据更改。
[确定,这是我的代码,即使关闭应用程序,我也试图创建正在运行的服务。在主要活动中,我创建了一个新按钮并调用startMyService()以启动服务,如下所示:...
当您的应用程序来自android O时,这是正常行为,如果您想保留Service
,则应将startForgroundService
与Notification
结合使用。阅读here