여기서 i.addFlags해서 새로운 태스크를 만들던데 .. 왜만드는지궁금합니다
=> startActivity 는 새로운 activity를 activity 에 쌓고 그 activity 로 이동하는 방식인데, 리시버는 activity가 아니기 때문에, 쌓을 activity가 없어 명시적으로 새로운 테스크에 쌓으라고 플레그를 주는 것입니다.
보다 자세한 사항은 https://programmingfbf7290.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%83%9C%EC%8A%A4%ED%81%AC-launchMode-Intent-%ED%94%8C%EB%9E%98%EA%B7%B8-%EC%B4%9D%EC%A0%95%EB%A6%AC 의 taskAffinity 속성 부분을 읽어 보세요.
스타트액티비티할때 왜 뒤에 context를 붙이나요..
=> startActivity 는 context 의 메소드 입니다.
Activity의 경우 Context를 상속 받아 구현한 클래스라 내부 메소드로 startActivity 가 있어서 굳이 context.startActivity같이 부를 필요가 없지만,
리시버는 Context를 상속받아 구현한 클래스가 아니다 보니 startActivity 메소드 자체가 없어서,
context의 startActivity를 호출 하는 것입니다.
그리고 마지막으로 저기 인텐트 선언할때 리시버클래스명 대신에 왜 context쓰는지도 궁금합니다.
=> 생성하는 인텐트의 원형은 Intent(Context packageContext, Class<?> cls) 로
첫번째 단에 context 값이 들어가야 합니다.
두번째 답해드렸듯이 리시버는 context를 상속받아 구현된 클래스가 아니기 때문에,
별도의 context를 넣은 것으로, context를 상속받은 activity 라면 activity.this 같이 자체 클래스를 넣는 것도 가능 합니다.