마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

쓰레드 안에서는 sharedpreferences 사용 못하나요??

0 추천
소켓서버통신 하고 있는데요. 서버에서 전송된 데이터를 받을때 메인액티비티말고 따로 쓰레드 액티비티를 만들어서 통신하고있습니다.

여기서 데이터가 들어오면 또다른 액티비티에 그 데이터를 저장하기 위해서 sharedpreferences를 사용하려고 하는데요.. intent를 쓰기에는 어플 종료되도 기록이 남아있어야해서요.

그런데 쓰레드 안에서는 sharedpreferences를 사용할 수 없나요??

public class rcvthread implements Runnable {

          public void run() {
            while(flag == 1){  
             try{
              networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
              rcvData = networkReader.readLine();

              SharedPreferences pref1 = getSharedPreferences("PrefName", MODE_PRIVATE);

 

이렇게하니까 MODE_PRIVATE부분에

MODE_PRIVATE cannot be resolved to a variable 라고 에러가뜨네요ㅠㅠ

 

import android.content.SharedPreferences;
import android.content.Context;

두개 다 추가해 주었구요.

무슨문제인가요??
익명사용자 님이 2015년 9월 22일 질문

1개의 답변

0 추천
;;

MODE_PRIVATE 상수는 Context에 정의되어있습니다.

당연히 Context.MODE_PRIVATE라고 써야죠........

쓰레드라서 안되는게 아니라

Import를 했어도 해당 클래스 해당하지 않는 것을 참조하려면

앞에 클래스명을 붙여줘야 합니다.

 

생각하시는 다른데(아마도 Activity 등이겠죠)에서 사용이 가능한건 해당 클래스 자체가 이미

Context이거나 그 파생 클래스이기 때문에 안붙여줘도 되는 것이구요.
Jinthree (8,980 포인트) 님이 2015년 9월 23일 답변
그래서 SharedPreferences pref1 = getSharedPreferences("PrefName", Context.MODE_PRIVATE);
이렇게 했었는데 이렇게하면 getSharedPreferences 에 오류가 뜹니다.

Multiple markers at this line
    - MODE_PRIVATE cannot be resolved to a variable
    - The method getSharedPreferences(String, int) is undefined for the type
     thread
이렇게 나오네요ㅠㅠ...
...