2017-05-12 1 views
-1

내 응용 프로그램에서 블루투스 장치 스캔 코드는 메서드로 BaseActivity에 기록됩니다.BaseActivity에서 onResume()이 BaseActivity를 확장하는 모든 활동에서 호출 중임

일부 활동을 BaseActivity으로 확장 했으므로 어떤 활동으로 전환해도 블루투스 검색이 수행되고 있습니다.

onResume()을 쓸 수있는 방법은 있습니까? BaseActivity은 한 번만 쓸 수 있습니까? 도와주세요. 미리 감사드립니다.

+0

당신이'onCreate' 방법에 그 코드를 이동하는 시도 해 봤나 호출하지 않습니다? –

+2

BaseActivity와 같은 소리가 yiur BLE 검사를 수행하기에 적합한 장소가 아닙니다. 왜 당신은 서비스를 사용하지 않습니까? –

+0

네, onCreate를 시도했는데 같은 일이 발생했습니다 – rithu

답변

0

어떻게 상속이 작동합니다. 그러나 서브 클래스의 onResume을 빈 메소드로 덮어 쓸 수 있습니다.

@Override 
public void onResume(){ 
    // no super class is called 

} 

하지만 프로그램 디자인에 문제가 있다고 생각합니다.

0

이 시도 :

public class BaseActivity extends AppCompatActivity { 

static Boolean IsResumecalled = false; 


@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
protected void onResume() { 
    super.onResume(); 
    if (!IsResumecalled) { 
     IsResumecalled= true; 
     //write your code here 
    } 
} 

} 
0

활성 블루투스 연결이 BaseActivity에 상주하지 않아야합니다. 오히려 자신의 onCreate()bindService을 통해 BluetoothService에 바인딩해야합니다. 따라서 Activity 하나가 파괴되고 다음 하나가 시작될 때 상관이 없으므로 Service은 활동 의존적이지 않기 때문에 중요하지 않습니다.

은 즉 bounded Service https://developer.android.com/guide/components/services.html

는 또한 지침으로 사용할 수있는 코드 예제가 구글된다 Services를 사용하는 BluetoothService https://developer.android.com/guide/topics/connectivity/bluetooth.html

및 방법에 관한 일반 안드로이드 개발자 가이드 여기를보세요.

onResume() 호출을 차단하는 것은 좋지 않습니다. 앱을 최소화하고 최대화하는 등 라이프 사이클의 중요한 부분이므로 차단하십시오.

0
자녀의 활동에

무시 onResume하지만 super.onResume()

@Override 
public void onResume(){ 
    // super.onResume(); // do not call this line in your child activities 
} 
관련 문제