如何在启动服务时将数据从活动传递到服务?

时间:2012-04-16 05:40:40

标签: android android-service

我在android中创建一个应用程序。

如何在服务中启动服务和访问时将ArrayList的对象传递给服务???

提前致谢...

5 个答案:

答案 0 :(得分:2)

你必须在service.OnStart方法中覆盖onStart方法,你可以获得Activity的意图。 如果要将ArrayList从activity传递给service,可以将arraylist转换为array。

在你的活动中

Intent intent=new Intent(ServicesActivity.this,FileManagerRequest.class);         
Bundle b=new Bundle()
b.putStringArray("Array", your_array)
intent.putExtras(b);
startService(intent);

在你的服务中

public void onStart(Intent intent, int startid){
    super.onStart(intent, startid);
    Bundle b=intent.getExtras();
    String[] Array = b.getStringArray("Array");
}

答案 1 :(得分:0)

两个选项:

  1. 如果服务是本地的,那么您可以绑定它并直接调用方法
  2. 如果服务是远程的,那么您可以使用Bundle传递一些数据。

答案 2 :(得分:0)

您的活动中

/ ** *** /

startbtn.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Bundle b=new Bundle();
            b.putString("id", id);
            Intent in=new Intent(create.this,myservice.class);

            in.putExtras(b);
            //Toast.makeText(getBaseContext(), "Service Started", Toast.LENGTH_LONG).show();
            startService(in);
}

答案 3 :(得分:0)

您服务中的

/ ** * *** /

public int onStartCommand(Intent intent, int flags, int startId) {
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
       super.onStart(intent, startId);
     id=intent.getExtras();
     value=id.getString("id");

Toast.makeText(this, "Service Started "+value, Toast.LENGTH_LONG).show();

答案 4 :(得分:0)

最后我得到了答案,它为我工作,试试吧。

1)从Activity发送对象喜欢ArrayList<String> names发送到这种方式的示例。 names.add("kdblue");

Intent startIntent = new Intent(CuurentActivity.this, UploadService.class);
startIntent.putStringArrayListExtra("data",names);
startService(startIntent);

2)现在从服务

接收此ArrayList<String>个对象
@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
       ArrayList<String> transferData = intent.getStringArrayListExtra("data");
      return START_STICKY;
    }

注意:transferData对象包含所有ArrayList<String> names属性。