서비스에서 컨텍스트 가져오기
신뢰할 수 있는 방법이 있습니까?Context
a부터Service
?
다음에 대한 방송 수신기를 등록하고 싶습니다.ACTION_PHONE_STATE_CHANGED
하지만 항상 이 정보를 얻기 위해 내 앱이 필요하지 않기 때문에 나는 그것을 저장하지 않습니다.Manifest
.
그러나 이 정보가 필요할 때 GC에 의해 방송 수신기를 죽일 수 없으므로 방송 수신기를 등록합니다.Service
.
그러므로, 나는 필요합니다.Context
부르는 쪽으로registerReceiver()
더 이상 필요하지 않을 때ACTION_PHONE_STATE_CHANGED
등록 취소합니다.
팁 있어요?
서비스는 컨텍스트입니다.
Service
확장된ContextWrapper
연장되는Context
그러므로Service
이다.Context
.사용하다'this'
서비스의 키워드입니다.
Service
확장된ContextWrapper
ContextWrapper
확장된Context
그래서..
Context context = this;
(서비스 또는 활동 클래스)
만일의 경우에 대비해서NullPointerException
당신은 내부의 맥락을 파악해야 합니다.onCreate().
Service
이다.Context
다음과 같이 하십시오.
private Context context;
@Override
public void onCreate() {
super.onCreate();
context = this;
}
참고:
읽기: "Android 컨텍스트 클래스를 정적 필드에 배치하지 마십시오. 메모리 누수이며 인스턴트 실행도 중단됩니다." 컨텍스트 클래스가 무엇인지 아십니까?활동도 그 중 하나이며 활동을 정적 필드로 저장하면 안 됩니다. 그렇지 않으면 메모리가 누출됩니다.그러나 컨텍스트는 모든 것보다 오래 사용되므로 컨텍스트(애플리케이션 컨텍스트인 경우)를 정적 필드로 저장할 수 있습니다.
부터Service
이다.Context
변수 컨텍스트는 다음과 같아야 합니다.this
:
DataBaseManager dbm = Utils.getDataManager(this);
서비스가 이미 컨텍스트 자체이기 때문에
당신은 심지어 그것을 통과할 수 있습니다.
Context mContext = this;
OR
Context mContext = [class name].this; //[] only specify the class name
// mContext = JobServiceSchedule.this;
서비스 컨텍스트를 원하는 경우this
키워드만약 당신이 활동 컨텍스트를 원한다면, 당신은 이와 같은 정적 변수를 만들어 그것에 접근할 수 있습니다.
public static Context context;
활동 중에onCreate()
context=this;
이제 서비스 내부의 컨텍스트에 액세스할 수 있습니다.
언급URL : https://stackoverflow.com/questions/6446221/get-context-in-a-service
'programing' 카테고리의 다른 글
PyQt 응용 프로그램에서 스레드화:Qt 스레드 또는 Python 스레드를 사용합니까? (0) | 2023.07.27 |
---|---|
Python의 Argparse에서 동일한 옵션을 여러 번 사용하기 (0) | 2023.07.27 |
개별 클래스 이름에 '시작' 선택기 사용 (0) | 2023.07.27 |
Oracle은 공백 앞에 하위 문자열을 가져옵니다. (0) | 2023.07.27 |
실타래의타이머 - 'n'초마다 기능 반복 (0) | 2023.07.27 |