활동을 비 행동 객체로 올바르게 전달합니다
-
20-09-2019 - |
문제
내 앱에서 ive는 비 행동 객체를 얻었습니다. 역할은 관리자 수업입니다. 여러 번 해당 활동에 대한 일부 작업을 수행하기 위해 "소스 활동"을 해당 관리자 클래스의 매개 변수로 전달해야합니다.
예를 들어, 토스트를 해야하는 myActivity가 있다고 가정 해 봅시다. 그래서 나는이 관리자 클래스가 MyManager라는 것을 가지고 있으며이 방법이 있습니다.
raiseToast(Activity sourceActivity) {
Toast.makeText(sourceActivity, demo, Toast.LENGTH_LONG).show();
}
그리고 myActivity 클래스에서 우리는이 방법을 이런 식으로 부릅니다.
MyManager manager=new MyManager();
manager.raiseToast(MyActivity.this);
잘 작동합니다.
내가 여기서 묻는 것, 이것은 비 행동 객체에 매개 변수로 활동을 전달하는 적절한 방법입니까? 실제 장치 (에뮬레이터가 아님)에 메모리 누출이 있습니다. 이것이 그 이유를 일으킬 수 있는지 궁금합니다.
고마워 Idan.
해결책
활동에서 getApplicationContext () 인 응용 프로그램 컨텍스트를 통과하려고 시도 할 수 있습니다. 이 MyManager 객체가있는 이유는 무엇입니까? 별도의 클래스에서 활동하지 않고 활동에서 토스트를 올릴 수 있습니다. 방법 RaiseToast ()를 활동 본문으로 옮기고 그냥 호출하십시오.
편집 : 읽으십시오 http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
제휴하지 않습니다 StackOverflow