원하시는대로 하려면 같은 인스턴스가 여러군데서 접근 가능해야 할 것 같은데요. 먼저 해당 시리얼 통신을 담당할 클래스를 하나 만드세요. 예를 들면 SerialCommunicationRepository라고 하면, 이 클래스의 인스터스를 Application 클래스에 만드세요.
https://developer.android.com/reference/android/app/Application
public class SerialCommunicationRepository {
// 시리얼 통신에 필요한 로직을 이 클래스에 위치
}
public class AppModule {
private final SerialCommunicationRepository serialCommunicationRepository = new SerialCommunicationRepository()
privat SerialCommunicationRepository getSerialCommunicationRepository() {
return serialCommunicationRepository;
}
}
public class MyApp extends Application {
private AppModule appModule;
@Override
public void onCreate() {
super.onCreate();
appModule = new AppModule();
}
public AppModule getAppModule() {
return appModule;
}
}
당연히 MyApp을 AndroidManifest.xml에 등록을 하셔야 겠죠? 이렇게 하면 AppModule은 singleton으로 앱 전체에 한개의 인스턴스만 생성될 겁니다. SerialCommunicationRepository도 마찬가지일거구요, 이제 액티비티에서 Applcation 인스턴스에 접근해서 AppModule을 가져오면 됩니다.
public class FirstActivity extends AppCompatActivity {
private AppModule appModule;
@Override
public void onCreate(...) {
appModule = ((MyApp) getApplicationContext()).getAppModule();
super.onCreate(...)
}
}
동일한 방법으로 다른 액티비티에서도 사용하시면 될 겁니다.AppModule을 가져오는 코드가 많이 반복되면 유틸리티 클래스를 만들어 코드를 빼거나 BaseActivity(덜 권장함)를 만들어 사용하시면 됩니다.