问题描述
我基本上在 onCreate()
内完成所有工作,并仅使用 onStartCommand()
从意图中获取字符串并停止服务。
这是 MyService.java 代码:
@Override
public int onStartCommand (Intent intent,int flags,int startId) {
if(intent != null)
this.test = intent.getStringExtra("test");
String action = intent.getAction();
if (action != null) {
if (action.equals("Stop")) {
stopForeground(true);
stopSelf();
return START_NOT_STICKY;
}
}
//return START_STICKY;
return START_REDELIVER_INTENT;
}
我的 MainActivity 只需像这样启动服务:
Intent intent = new Intent(MainActivity.this,MyService.class);
intent.putExtra("test",test);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
startForegroundService(intent);
else
startService(intent);
并像这样停止服务:
Intent stopServiceIntent = new Intent(MainActivity.this,MyService.class);
stopServiceIntent.setAction("Stop");
startService(stopServiceIntent);
在我昨天问的另一个问题中,有人建议我应该直接使用 stopService(intent)
停止服务,这样我就不需要再次启动服务并传递一个字符串来停止它。我想通过这样做,我会将 stopForeground(true)
中的 onStartCommand()
呼叫从 onDestroy()
中的 application/xml
移动。
我想问你这个方法是否和我的一样。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)