I know how to pass object using Parcelable
or Serializable
but I found other approach on the internet to do it - using Application
class like this:
class ComplexObject {
// contain String, int, List<String>, other objects ...
}
class App extends Application {
Map<String, Object> map = new HashMap<>();
public void put(String key, Object value) {
map.put(key, value);
}
public <T> T get(String key, Class<T> cls) {
return cls.cast(map.get(key));
}
public void remove(String key) {
map.remove(key);
}
}
class ActivityA extends AppCompatActivity {
void start(ComplexObject obj) {
Intent intent = new Intent(this, ActivityB.class);
((App) getApplicationContext()).put("obj", obj);
startActivity(intent);
}
}
class ActivityB extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
App app = ((App) getApplicationContext());
ComplexObject obj = app.get("obj", ComplexObject.class);
app.remove("obj");
}
}
Is this impact performance of app?