Android 데이터 영구 화 환경 설정 메커니즘 상세 설명
8760 단어 Android데이터 영구 화Preferences
Android 에서 데이터 의 지속 화 를 실현 하 는 데 는 다섯 가지 방식 이 있 습 니 다.Preferences,파일 File,I/O 작업,SQLite 데이터베이스,ContentProvider 구성 요소 입 니 다.
다음은 간단 한 소 개 를 하 겠 습 니 다.
1.Preferences 의 소개:
Preferences 는 경량급 데이터 저장 체제 입 니 다.그 는 boolean 형식,int 형식,float 형식,long 형식 과 String 형식의 데 이 터 를 포함 하여 키 쌍 의 형식 으로 응용 프로그램의 개인 Preferences 디 렉 터 리(/data/<패키지 이름>/shared 에 저장 합 니 다.prefs/)에서 이러한 Preferences 메커니즘 은 응용 프로그램의 설정 정 보 를 저장 하 는 데 광범 위 하 게 응용 된다.
다음은 Preferences 의 간단 한 코드 입 니 다.
이 코드 는 서로 다른 권한 을 만 드 는 데이터 대상 입 니 다:
package com.example.data_sharedpreferences;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView text;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
writeData();
text = (TextView) findViewById(R.id.text);
button = (Button) findViewById(R.id.button0);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//
readData();
}
});
}
/**
*
*/
public void writeData() {
// MODE_PRIVATE
SharedPreferences sp_p = this.getSharedPreferences("ct_sp_private",
Context.MODE_PRIVATE);
// SharedPreferences Editor
SharedPreferences.Editor editor = sp_p.edit();
//
editor.putString("username", "marry_private");
// , xml
editor.commit();
//
SharedPreferences sp_or = this.getSharedPreferences("ct_sp_private",
Context.MODE_WORLD_READABLE);
sp_or.edit().putString("username", "marry_only_read").commit();
//
SharedPreferences sp_ow = this.getSharedPreferences("ct_sp_private",
Context.MODE_WORLD_WRITEABLE);
sp_ow.edit().putString("username", "marry_only_write").commit();
//
SharedPreferences sp_x = this.getSharedPreferences("ct_sp_private",
Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
sp_x.edit().putString("username", "marry_write_read").commit();
}
/**
*
* SharedPreferences key key value。 :getBoolean
* ,getInt,getFloat,getLong.
*/
public void readData() {
// TODO Auto-generated method stub
text.setText("private_username:"
+ this.getSharedPreferences("ct_cp_private", 0).getString(
"username", "marry_private")
+ "\r
"
+ "read_username:"
+ this.getSharedPreferences("ct_cp_private", 0).getString(
"username", "marry_only_read")
+ "\r
"
+ "write_username:"
+ this.getSharedPreferences("ct_cp_private", 0).getString(
"username", "marry_only_write")
+ "\r
"
+ "write_read_username:"
+ this.getSharedPreferences("ct_cp_private", 0).getString(
"username", "marry_write_read") + "\r
");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
다음 코드 는 다른 응용 프로그램 에서 이전 응용 프로그램 에 접근 하고 위 에 응 용 된 데 이 터 를 읽 는 것 을 실현 합 니 다.
package com.example.data_sharedpreferences2;
import com.example.data_sharedpreferences2.R;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager.NameNotFoundException;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
/**
* data_sharedpreferences Sharedpreferences :
* 1、 2、
*
* @author marry
*
*/
public class MainActivity extends Activity {
private TextView text;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.text);
button = (Button) findViewById(R.id.button0);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 1, 1
try {
// context
Context ortherContext = createPackageContext(
"com.example.data_sharedpreferences", 0);
// ortherContext.getSharedPreferences 1
text.setText("private_username:"
+ ortherContext.getSharedPreferences(
"ct_cp_private", 0).getString("username",
"marry_private")
+ "\r
"
+ "read_username:"
+ ortherContext.getSharedPreferences(
"ct_cp_private", 0).getString("username",
"marry_only_read")
+ "\r
"
+ "write_username:"
+ ortherContext.getSharedPreferences(
"ct_cp_private", 0).getString("username",
"marry_only_write")
+ "\r
"
+ "write_read_username:"
+ ortherContext.getSharedPreferences(
"ct_cp_private", 0).getString("username",
"marry_write_read") + "\r
");
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Preferences 를 사용 할 때 다음 과 같은 주의 할 점 이 있 습 니 다.1.
Context.getSharedPreferences(String fileName,int mode)
방법 을 통 해 xml 파일 을 열 수 있 습 니 다.파일 의 위 치 는/data/package 입 니 다.name/shared_prefs/fileName.xml,존재 하지 않 으 면 자동 으로 생 성 됩 니 다.이 파일 에 대해 읽 기와 쓰기 작업 을 할 수 있 으 며,응용 프로그램의 각 구성 요소 간 에 데 이 터 를 공유 할 수 있 습 니 다.mode 를 Context.MODE 로 설정 하면WORLD_READ 혹은 Context.MODEWORLD_WRITE 는 다른 응용 프로그램 에 도 접근 할 수 있 습 니 다.그러나 이것 은 안 드 로 이 드 가 추천 하 는 방식 이 아니 라 크로스 애플 리 케 이 션 공유 데 이 터 를 실현 하려 면 ContentProvider 로 추천 하 는 방식 입 니 다.2.다른 응용 프로그램 에서 만 든 shared 에 접근 하려 면prefs 파일,2 가지 조건 을 만족 시 켜 야 합 니 다.우선 다른 응용 프로그램 은 MODE 를 설정 해 야 합 니 다.WORLD_READ 또는 MODEWORLD_WIRTE 권한,그리고 다른 응용 프로그램의 package 를 알 아야 합 니 다.name,그리고
Context.createPackageContext()
방법 을 통 해 다른 응용 context 를 얻 을 수 있 습 니 다.그리고context.getSharedPreferences()
방법 으로 shared 를 열 수 있 습 니 다.prefs 파일 입 니 다.하지만 이런 방법 은 추천 하지 않 습 니 다.3.보기 드 문 상황 에서 sharedprefs 권한 은 MODE 로 설정PRIVATE,다른 응용 프로그램 에 접근 할 수 있 기 를 바 랍 니 다.그러면 manifest 파일 에 android:user 를 설정 할 수 있 습 니 다.id(이 속성 인 것 같 음),여러 애플 리 케 이 션 공유 USERID。본질 적 으로 sharedprefs 파일 은 Liux 의 권한 으로 제어 합 니 다.MODEPRIVATE 는-rw----와 유사 하기 때문에 여러 응용 프로그램 이 같은 USER 를 사용 했다 면ID,자 연 스 럽 게 이 파일 에 접근 할 수 있 는 권한 이 생 겼 습 니 다.
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,,,,그리고 을 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.