stopService(intent) 相当于 startService(intent) 然后在 onStartCommand() 中停止它?

问题描述

我基本上在 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...