3

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

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

提前致谢...

4

5 回答 5

2

您必须在 service.OnStart 方法中覆盖 onStart 方法,您可以获得 Activity 的意图。如果您想将 ArrayList 从活动传递到服务,您可以将您的 ArrayList 转换为数组。

在你的活动中

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");
}
于 2012-04-16T05:46:36.210 回答
1

两种选择:

  1. 如果服务是本地的,那么您可以绑定到它并直接调用方法
  2. 如果服务是远程的,那么您可以使用它Bundle来传递一些数据。
于 2012-04-16T05:46:19.567 回答
1

最后我得到了答案,它对我有用,试试吧。

ArrayList<String> names1)同时从 Activity发送对象喜欢发送到这种方式示例。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属性。

于 2018-01-10T22:17:28.670 回答
-1

/ **在你的活动中*** /

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);
}
于 2012-12-23T11:15:48.467 回答
-1

/ **为您服务* *** /

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();
于 2012-12-23T11:18:52.913 回答