Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AAC-2017-soma

Hyeonji Jeong
October 28, 2017
27

 AAC-2017-soma

Hyeonji Jeong

October 28, 2017
Tweet

Transcript

  1. public class MyObserver implements LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) public void onResume()

    { } @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) public void onPause() { } } aLifecycleOwner.getLifecycle().addObserver(new MyObserver());
  2. class MyLocationListener implements LifecycleObserver { private boolean enabled = false;

    public MyLocationListener(Context context, Lifecycle lifecycle, Callback callback) { ... } @OnLifecycleEvent(Lifecycle.Event.ON_START) void start() { if (enabled) { // connect } } public void enable() { enabled = true; if (lifecycle.getState().isAtLeast(STARTED)) { // connect if not connected } } @OnLifecycleEvent(Lifecycle.Event.ON_STOP) void stop() { // disconnect if connected } }
  3. onCreate onStart onResum e onStop onDestory Web service.fetchUser() onPause Activity

    Rotated Web service.fetchUser() onCreate onStart onResum e
  4. public class SharedViewModel extends ViewModel { private final MutableLiveData<Item> selected

    = new MutableLiveData<Item>(); public void select(Item item) { selected.setValue(item); } public LiveData<Item> getSelected() { return selected; } } public class MasterFragment extends Fragment { private SharedViewModel model; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class); itemSelector.setOnClickListener(item -> { model.select(item); }); } }
  5. public class NameActivity extends AppCompatActivity { private NameViewModel mModel; @Override

    protected void onCreate(Bundle savedInstanceState) { //... // ViewModelਸ оઉ২פ׮. mModel = ViewModelProviders.of(this).get(NameViewModel.class); // UIܳ সؘ੉౟ೞח ২੷ߡܳ ٟ݅פ׮. final Observer<String> nameObserver = new Observer<String>() { @Override public void onChanged(@Nullable final String newName) { // UIо সؘ੉౟ ػ ҃਋݅ mNameTextView.setText(newName); } }; // ???!! mModel.getCurrentName().observe(this, nameObserver); } }
  6. ਗद SQL ௪ܻ੄ ஹ౵ੌ ఋ੐ Ѩૐ
 SQL ௪ܻ৬ Java ؘ੉ఠ

    ё୓ ࢎ੉ܳ ߸ജೞח boilerplate codeܳ ઁѢ ழࢲ ژח ۽؊ ੘ࢿ ೙ਃ হ਺(߈ജ ૑ਗೣ)
 ؘ੉ఠ ৔ࣘച ઁҕ Using Room
  7. @Database(entities = {User.class}, version = 1) public abstract class AppDatabase

    extends RoomDatabase { public abstract UserDao userDao(); } Table Definition Database
  8. @Entity public class User { @PrimaryKey private int uid; @ColumnInfo(name

    = "first_name") private String firstName; @ColumnInfo(name = "last_name") private String lastName; // Getters and setters are ignored for brevity, // but they're required for Room to work. } Definition Entity
  9. @Dao public interface UserDao { @Query("SELECT * FROM user") List<User>

    getAll(); @Query("SELECT * FROM user WHERE uid IN (:userIds)") List<User> loadAllByIds(int[] userIds); @Query("SELECT * FROM user WHERE first_name LIKE :first AND " + "last_name LIKE :last LIMIT 1") User findByName(String first, String last); @Insert void insertAll(User... users); @Delete void delete(User user); } Definition DAO