我正在创建一个android应用程序。
如何在启动服务时传递ArrayList对象并在服务中访问它?
谢谢提前...
我正在创建一个android应用程序。
如何在启动服务时传递ArrayList对象并在服务中访问它?
谢谢提前...
您需要在服务中覆盖onStart方法。在onStart方法中,您可以获取Activity的意图。如果您想从Activity传递ArrayList到服务,则可以将您的ArrayList转换为数组。
在您的Activity中:
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)当从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;
}
/**在你的活动中***/
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();