찾다

 >  Q&A  >  본문

android - 我能否实现一个不需主动传入上下文的dialog?

既然我可以通过注册activity生命周期回调的方法在任意地方获取到最后一个onresume的activity,
那么我是否可以创建一个工具类,工具类利用这个activity来构造dialog呢?
这样做有什么坏处呢?
我现在用一个toast工具类,在工具类中直接使用了application的context,这样做可以吗?

阿神阿神2771일 전602

모든 응답(6)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-18 09:18:44

    예, 가능합니다. 그런데 왜 그렇습니까? 대화 도구 클래스를 캡슐화하고 활동을 전달하면 됩니다. 토스트의 경우 applicationContext를 사용하는 것이 좋습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:18:44

    대화 상자를 구성하고 여기에 활동 컨텍스트를 직접 전달하면 콜백이나 그와 유사한 작업을 수행할 필요가 없습니다. 다른 사람의 패키지 도구 라이브러리를 참조하여 다른 사람의 아이디어를 볼 수 있습니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:18:44

    똑똑하게 활동을 대화 상자로 사용할 수 있습니다. 공식 웹사이트에 나와 있는 것처럼 테마를 대화 상자로 설정하기만 하면 됩니다

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:18:44

    원래 시스템 수준 대화 상자는 매우 편리합니다. 팝업 상자를 구현하려면 applicationContext만 전달하면 됩니다. 그러나 다양한 제조업체의 과도한 사용자 정의로 인해 (저는 Xiaomi의 시스템 수준 팝 사용자 정의를 접했습니다.) -up 상자, 동일한 버전, 업데이트되면 수정), 따라서 사용자 정의된 대화 상자 형식의 활동을 팝업 상자로 사용하여 위의 모든 사항을 구현하는 것이 가장 좋습니다. Tencent의 캐리어 비둘기 푸시(Carrier Pigeon Push) 방식으로 사용자 정의의 어려움 없이 성공적인 개방을 보장할 수 있습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:18:44

    Android Dialog의 경우 무슨 일이 있어도 Context를 전달해야 합니다. Activity 전달은 실제로 Context 전달과 동일합니다. 애플리케이션의 컨텍스트를 사용하는 것은 불가능합니다. 또한 정적 컨텍스트는 권장되지 않으며 메모리 누수를 일으킬 수 있습니다.

    그러나 종속성 주입과 같은 방법을 통해 이 프로세스를 숨기거나 단순화할 수 있습니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:18:44

    안 됩니다(권장하지 않는다고 말하고 싶지만)
    이미 구현한 건물이니 어떻게 될지 추측해 보겠습니다.

    1. 네트워크 요청을 보낸 후 페이지가 종료되었지만 요청이 취소되지 않았습니다. 요청이 반환되면 이 대화 상자를 설명하는 방법이 있습니까? Dialog 및 작업에 데이터가 있습니다. 코드를 어디에 넣어야 할까요? 이 데이터를 Dialog 인스턴스에 성공적으로 넣고 새 내부 클래스를 만들 수 있습니다. 축하합니다. 방금 종료된 Activity의 메모리가 유출되었습니다

    2. 일반 대화상자를 사용하는 것을 어떻게 제한할 수 있나요? 어디서든 재생할 수 있고 코드 구조도 유지될 수 있나요?

    3. 작은 프로젝트의 경우 필요에 따라 직접 BaseActivity를 생성하고, 코드 구조를 처리하고, 대화 상자를 띄워도 큰 어려움은 없습니다.

    회신하다
    0
  • 취소회신하다