17

我在将值从 Activity 传递到已经运行的服务时遇到问题。我想知道最好的方法是什么?添加额外内容将不起作用,因为我认为这必须在意图开始之前完成?(如我错了请纠正我)。

任何帮助都会很棒!如果需要,我可以详细说明。

担。

4

2 回答 2

39

如果您的服务不是IntentService,您可以调用任意startService(...)多次。该服务将第一次运行,但下一次调用将导致新onStartCommand()调用以及您需要的新附加功能。

检查这个答案文档

于 2013-03-11T19:15:12.097 回答
0

如果服务正在运行,则从活动向服务传递额外的意图启动此意图 ,从活动尝试此操作并使用 putExtra 传递参数。

Intent rc = new Intent(getApplicationContext(), myService.class);
rc.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //important for Android 10
rc.putExtra("parama","ciao");
rc.putExtra("paramb","hello");
startService(rc);

记住,新线程,退出到主线程。

new Thread(){
    @Override
        public void run() {
            super.run();
            //start service..
        }    
}

你的服务

 public class myService extends Service {
               @Override
                public int onStartCommand(Intent intent, int flags, int startId) {
                if (intent.hasExtra("parama")){            
                Bundle b=new Bundle();
                b=intent.getExtras();
                String par_a=b.getString("parama");
                }
                if (intent.hasExtra("paramb")){            
                Bundle b=new Bundle();
                b=intent.getExtras();
                String par_b =b.getString("paramb");
                }
        }
    }
于 2020-10-20T13:44:16.720 回答