我正在android中创建一个应用程序。
如何在启动服务和访问服务时将ArrayList的对象传递给服务???
提前致谢...
您必须在 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");
}
两种选择:
Bundle
来传递一些数据。最后我得到了答案,它对我有用,试试吧。
ArrayList<String> names
1)同时从 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
属性。
/ **在你的活动中*** /
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);
}
/ **为您服务* *** /
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();