通过Intent将对象发送到服务而不进行绑定

jax*_*jax 15 android

是否可以通过Intent将对象发送到Android服务而不实际绑定到服务?或者也许是服务访问对象的另一种方式......

Bin*_*ran 25

您可以像这样调用startService(Intent):

MyObject obj = new MyObject();
Intent intent = new Intent(this, MyService.class);
intent.putExtra("object", obj);
startService(intent);
Run Code Online (Sandbox Code Playgroud)

您要发送的对象必须实现Parcelable(您可以参考此Percelable指南)

class MyObject extends Object implements Parcelable {

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        // TODO Auto-generated method stub

    }

}
Run Code Online (Sandbox Code Playgroud)

使用Service,在onStart()或onStartCommand()方法中,对于api级别5和更高版本,您可以获取对象:

MyObject obj = intent.getParcelableExtra("object");
Run Code Online (Sandbox Code Playgroud)

就这样 :)


Kha*_*jar 8

如果您不想实现Parcelable并且您的对象是可序列化的

用这个

在发件人Activiy

Intent intent = new Intent(activity, MyActivity.class);

Bundle bundle = new Bundle();
bundle.putSerializable("my object", myObject);

intent.putExtras(bundle);

startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在接收器中:

myObject = (MyObject) getIntent().getExtras().getSerializable("my object");
Run Code Online (Sandbox Code Playgroud)

适合我的工作尝试.但该对象必须是可序列化的:)