앱위젯 프로그램 만들고 있는데요,

변수로 설정하나 해놓고 그 값을 사용하고 싶은데, 왜 A메소드에서 세팅 분명히 했는데, B에서 A에서 세팅한 값을 못읽는걸까요?

 

public class ssWidget extends AppWidgetProvider {

private Thread thread

 

@Override
    public void onEnabled(Context context) {

}

 

@Override
    public void onReceive(Context ctx, Intent intent) {

   thread.getId();

}

 

 

@Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {     

    thread = new Thread();

}

 

위처럼 되어있는데, 우선 onUpdate부터 실행이 되니 new하고 onReceive에서 getId하면 나와야하는데..null로 나오네요..

public static Thread thread으로 static하게 선언하면 잘되요, 안그렇게 하면 서로 onXXX 에서 한 값들을 서로 못보는것 같아요..

저거뿐 아니라 onEnabled에서도 세팅해봤는데, 제가 내린 결론은 onXXX에서 설정한 값은..같은 파일서 선언한게 아닌것 같다.

static변수로 해야지 서로 세팅한 값을 보더라고요..

 

static변수는 문제가 많아서 걷어내야하는데, 저걸 어떻게 써야할까요..

SharedPreference를 쓰고 싶어도 거기에는 Thread타입이 없어서 쓰지를 못하고 있네요..