1. SQLite
DBHelper
싱글톤 패턴으로 하나의 객체만 생성
Context를 Activity나 Service의 Context를 보내줄경우 메모리가 낭비 될수있으므로 이런부분에서는
Application Context를 넘겨주는 것이 좋음
public class DBHelper extends SQLiteOpenHelper {
public static final int DB_VERSION = 1;
public static final String DBFILE_CONTACT = "cineheaven.db";
private static DBHelper instance = null;
private DBHelper(Context context) {
super(context, DBFILE_CONTACT, null, DB_VERSION);
}
public static SQLiteOpenHelper getInstance(Context context){
if(instance == null)
instance = new DBHelper(context);
return instance;
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(MovieDBCtrct.SQL_CREATE_TBL);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// db.execSQL(ContactDBCtrct.SQL_DROP_TBL) ;
onCreate(db);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// onUpgrade(db, oldVersion, newVersion);
}
}
테이블별 DB클래스 실질적 SQL과 컬럼을 상수로 지정
public class CommentDBCtrct {
private CommentDBCtrct() {
}
public static final String TBL_CONTACT = "COMMENT";
public static final String COL_POST_ID = "POST_ID";
public static final String COL_WRITER = "WRITER";
public static final String COL_REVIEW_ID = "REVIEW_ID";
public static final String COL_WRITER_IMAGE = "WRITER_IMAGE";
public static final String COL_TIME = "TIME";
public static final String COL_TIMESTAMP = "TIMESTAMP";
public static final String COL_RATING = "RATING";
public static final String COL_CONTENTS = "CONTENTS";
public static final String COL_RECOMMEND = "RECOMMEND";
public static List getItem(SQLiteDatabase db, int postId) {
Cursor cursor = db.rawQuery("SELECT * FROM "+TBL_CONTACT+" WHERE REVIEW_ID="+postId, null);
List<ReadCommentItem> list = new ArrayList<>();
for(int i=0;i<cursor.getCount();i++)
if(cursor.moveToNext())
{
ReadCommentItem item = new ReadCommentItem();
item.id =cursor.getInt(0);
item.writer =cursor.getString(1);
item.movieId =cursor.getInt(2);
item.writer_image =cursor.getString(3);
item.time =cursor.getString(4);
item.timestamp=cursor.getLong(5);
item.rating=cursor.getFloat(6);
item.contents =cursor.getString(7);
list.add(item);
}
Log.d("db","getSize : "+list.size());
return list;
}
public static void insertItem(SQLiteDatabase db, List<ReadCommentItem> list) {
db.execSQL(CommentDBCtrct.SQL_CREATE_TBL);
for (int i = 0; i < list.size(); i++) {
ReadCommentItem item = list.get(i);
String sql = "(";
sql += item.id + ",";
sql += "'" + item.writer + "',";
sql += "" + item.movieId + ",";
sql += "'" + item.writer_image + "',";
sql += "'" + item.time + "',";
sql += "" + item.timestamp + ",";
sql += "" + item.rating + ",";
sql += "'" + item.contents + "',";
sql += "" + item.recommend + ")";
db.execSQL(SQL_INSERT + sql);
}
Log.d("db","insert : "+list.size());
}
// CREATE TABLE IF NOT EXISTS CONTACT_T (NO INTEGER NOT NULL, NAME TEXT, PHONE TEXT, OVER20 INTEGER)
public static final String SQL_CREATE_TBL = "CREATE TABLE IF NOT EXISTS " + TBL_CONTACT + " " +
"(" +
COL_POST_ID + " INTEGER NOT NULL PRIMARY KEY" + ", " +
COL_WRITER + " TEXT" + ", " +
COL_REVIEW_ID + " INTEGER NOT NULL " + ", " +
COL_WRITER_IMAGE + " TEXT" + ", " +
COL_TIME + " TEXT" + ", " +
COL_TIMESTAMP + " TIMESTAMP" + ", " +
COL_RATING + " FLOAT NOT NULL," +
COL_CONTENTS + " TEXT ," +
COL_RECOMMEND + " INTEGER NOT NULL" +
")";
// DROP TABLE IF EXISTS CONTACT_T
public static final String SQL_DROP_TBL = "DROP TABLE IF EXISTS " + TBL_CONTACT;
// SELECT * FROM CONTACT_T
public static final String SQL_SELECT = "SELECT * FROM " + TBL_CONTACT;
// INSERT INTO person VALUES(NULL, 15, 'James', 'Barkely')
// ON DUPLICATE KEY UPDATE academy_id = VALUES(academy_id);
// INSERT OR REPLACE INTO CONTACT_T (NO, NAME, PHONE, OVER20) VALUES (x, x, x, x)
public static final String SQL_INSERT = "INSERT OR IGNORE INTO " + TBL_CONTACT + " " +
"(" +
COL_POST_ID + "," +
COL_WRITER + "," +
COL_REVIEW_ID + "," +
COL_WRITER_IMAGE + "," +
COL_TIME + "," +
COL_TIMESTAMP + "," +
COL_RATING + "," +
COL_CONTENTS + "," +
COL_RECOMMEND +
") VALUES ";
// DELETE FROM CONTACT_T
public static final String SQL_DELETE = "DELETE FROM " + TBL_CONTACT;
}
2. Glide
Glide를 이용해 로컬에 이미지 저장하는 방식
https://stackoverflow.com/questions/44761720/save-pictures-in-device-glide-library
save pictures in device [Glide Library]
i'm trying to add Download Feature to my application i 'm using Glide Library to downlaod the pictures from their url This is the code from which I save an picture in device storage but not working...
stackoverflow.com
3. 개선사항
1. 접근제어자 잘붙이기
-귀찮아도 생각하고 붙이자2. string.xml 활용
- 네이밍이 너무 어렵다.3. 변수명에 언더바쓰지않기
- 전혀 몰랏던내용 앞으로 숙지하자
4. 액티비티간 데이터공유 방법 고민
- static으로 불러오는 방식이 맞는지 고민중
5. getInstance는 싱글톤 객체에만 사용
6, e.printstacktrace 지양 - 성능 및 보안에 취약함 관련내용 포스팅
7. 클래스를 좀더 세분화하여 코드분석시에 결과만 신경쓸 수 있도록 수정
8. getcontext or this 대신 applicationcontext를 전달하여 사용하는것이 좋음
9. gson의 typetoken메소드 방식 고려
'프로그래밍 > 부스트코스' 카테고리의 다른 글
부스트 코스 에이스 미션 6 (RecyclerView, 개선사항) (0) | 2019.09.06 |
---|---|
부스트 코스 에이스 미션 4 (volley, ViewModel, 개선사항) (0) | 2019.08.23 |
부스트 코스 에이스 미션 3 (ViewPager, Fragment, NavigationDrawer, 개선사항) (0) | 2019.08.07 |
부스트 코스 에이스 미션 2 (Activity 전환, 버튼이미지, 개선사항)출처: (0) | 2019.08.07 |
부스트 코스 에이스 미션 1 (ListView, 개선사항) (0) | 2019.08.04 |
댓글