안드로이드 개발 질문/답변
(글 수 45,052)
Activity 클래스의 객체 생성 후 그 클래스의 메소드를 사용하는 방법에 대한 질문입니다.
특정 응용에 대한 api 역할을 해주는 클래스를 만들고 있습니다.
그런데 제공하려는 api 중에 apk 파일을 마켓이 아닌 특정 서버에서 다운받아 설치 해주는 함수가 있습니다.
이를 위해서는 아래 코드처럼 Intent를 이용해서 안드로이드의 app 설치관련 Activity를 실행시켜야 하기 때문에
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
startActivity(intent);
api 클래스는 Activity 클래스를 상속받았습니다.
그런데 화면전환을 하기 위한 것이 아니라 api만 제공해주면 되는 클래스이기 때문에
응용 쪽에서 startActivity()로 api클래스를 호출하지 않고
그냥 new API클래스() 로 생성을 하고
이 객체를 이용해서 관련 api들에 접근을 하려고 합니다.
다른 메소드들은 호출이 잘 되는데
위에 말씀드린 api는 호출이 되지 않습니다.
nullpointerexception이 발생하는데요
new 로 생성한 activity 클래스는 startActivity를 이용해서 다른 activity를 호출할 수 없나요?
보통 안드로이드 앱을 실행할 때 startActivity()로 한 후 거기서 다른 앱을 실행할 때 똑같이 startActivity()로 하는 식인데요.
그렇게 할 수 있는 이유가 startActivity()를 하면 ActivityManager가 액티비티 등록 정보를 갖고 있다가 액티비티간 화면 전환 등과 같이
시스템에서 필요한 정보를 이용하며 관리할 것 같은데,
(아시다시피 안드로이드는 시스템이 액티비티간 화면 전환 히스토리 등을 기억하고 이용합니다.)
new를 하면 Manager가 필요한 Caller 액티비티 정보가 없기 때문에 안 되는 게 아닌가 싶습니다.