我在将值从Activity传递到已经运行的服务时遇到问题。我想知道最好的方法是什么?添加额外内容不会工作,因为我认为必须在意图开始之前完成此操作? (如我错了请纠正我)。
任何帮助都会很棒!如果需要,我可以详细说明。
丹
答案 0 :(得分:31)
如果您的服务不是IntentService
,则可以根据需要多次拨打startService(...)
。该服务将在第一次运行,但下一次调用将导致新onStartCommand()
次呼叫,并带有您需要的新额外服务。
检查this answer和doc。
答案 1 :(得分: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");
}
}
}