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

AlarmManager, 브로드캐스트 관련 질문 있습니다. [closed]

0 추천

안녕하세요 제가 공부용으로 프로그램 코딩 중에 AlarmManager를 사용하면서

broadcast사용에 문제가 있어서 글을 올립니다.

일단, AlarmManager를 사용하기 위해서 BroadCastReceiver를 등록해야하는데,

문제는 제가 만들려는 프로그램에선 BroadCasterReceiver에서 다른 클래스에 있는

함수와 데이터를 사용해야 한다는 점입니다.

이를 위해 Inner클래스로 Receiver를 선언했더니 Inner클래스는 Manifast에

Receiver로 등록이 되지 않는다는겁니다.

그래서 다음으로 LocalBroadCastReceiver를 사용해서 Receiver를 등록해보려

했지만 AlarmManager에서는 이 방법은 사용할 수 없다고 검색해보고 알았습니다.

혹시 이 문제를 해결할 수 있는 방법이 있을까요?

아, 그리고 registerReceiver도 사용해봤는데, 이 방법도 되지 않았습니다.

테스트용으로 사용헀던 코드를 같이 올리겠습니다.

class MainActivity : AppCompatActivity() {
    lateinit var context: Context
    lateinit var alarmManager: AlarmManager
    lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        context = this
        alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
        val view = binding.root
        setContentView(view)

        val br = Receiver()
        val intentFilter = IntentFilter("range")
        registerReceiver(br, intentFilter)

        binding.btnCreate.setOnClickListener {
            val intent = Intent(context, Receiver::class.java).apply {
                action = "range"
            }
            val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
            Log.d("MainActivity", "Create: " + Date().toString())
            alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000, pendingIntent)
        }

    }
    inner class Receiver: BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            Log.d("알람", "테스트")
            Log.d("MainActivity", "Create: " + Date().toString())
        }
    }
}

마지막으로, inner클래스로 사용하지 않고 그냥 Manifast에 Recevier를 등록했을 때는

정상적으로 작동했었습니다.

질문을 종료한 이유: 해결했습니다
bonon (620 포인트) 님이 2021년 3월 26일 질문
bonon님이 2021년 3월 30일 closed
...