2011-11-08 3 views
0

내가 하나가 마무리()을 사용하지 않아야합니다 워드 프로세서에서 읽기) (칩니다 -대안은

난 그냥, 알고 싶은 ...하지만 난 정말이에 대한 더 나은 대안이 표시되지 않는이

MainActivity 
    -> Sub1Activity 
     -> MySMSActivity 
     -> send SMS 
     -> handle if SMS was sent or not 
      <- finish() 
     <- finish() 
(skip Sub1Activity) 
MainActivity 

MainActi의 코드를 이렇게 더 나은, 청소기 방법 ...

많은 감사

내가 기본적으로해야 할 일이입니다 vity :

this.myBtn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     doSub1Activity("xyz"); 
    } 
}); 

public void doSub1Activity() { 
    Intent i; 
    i = new Intent(this, SUB1_screen.class); 
    startActivity(i); 
} 

코드 Sub1Activity에서 :

this.myBtn.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     doMySMSActivity("xxx"); 
     finish();   //<- this is the 1. call to "finish" I am concerned about 
    } 
public void doMySMSActivity() { 
    Intent i; 
    i = new Intent(this, MySMSActivity.class); 
    startActivity(i); 
    } 

코드 MySMSActivity에가 :

private void sendSMS(String phoneNumber, String message) 
    {   
     String SENT = "SMS_SENT"; 
     String DELIVERED = "SMS_DELIVERED"; 

     PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
       new Intent(SENT), 0); 

     //---when the SMS has been sent--- 
     bRSMS_has_been_sent = new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context arg0, Intent arg1) { 

       switch (getResultCode()) 
       { 
       case Activity.RESULT_OK: 
        ... 
        break; 
       default: 
        break; 
       } 
       finish(); // another call to finish so the user continues with 
             // MainActivity after SMS has been sent... 
      } 
     }; 

     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);   
    } 
+0

문서에 연결할 수 있습니까? – Ally

답변

1

당신은 finish() 여러 번 호출 할 필요가 없습니다. 기본 활동으로 돌아 가야 할 경우 아래 플래그를 사용하여 간단히 시작하십시오. 그것은 이미 존재하는 경우 활동을 재사용합니다.

Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP

+0

Clariy에 MySMSActivity에서 내가 언급 한 플래그로 startActivity (MainActivity)를 사용할 수 있습니까? 이로 인해 Sub1Activity와 MySMSActivity가 생존하게됩니까? – user387184

+0

예. 일반적으로 당신은 이것에 대해 걱정하지 않아야합니다. 값 비싼 리소스'onPause()'를 공개하고 싶을 수도 있지만, 활동이 끝나지 않았다면 문제가되지 않습니다. –

+0

또한, 어떤 액티비티가 내가 다시 돌아갈 필요가 있는지 알지 못한다면 (Sub1Activity가 MainActivity가 아닌 다른 액티비티에 의해 호출되었을 수도 있기 때문에,이 두 가지를 스택에서 꺼내서 계속해야합니다) 그러면 실제로이 활동을 "위임자"로 끝까지 전달해야하므로 어디로 돌아갈 지 알 수 있습니까? 이 경우에는 마무리가 정말 좋지 않습니까? – user387184

0

왜 자체 자책골 활동 보내는 SMS을? 사용자와 상호 작용하지 않습니다. Sub1Activity에서 보류중인 의도를 외면하십시오.

+0

... MySMSActivity가 SMS 전송 외에 몇 가지 다른 작업을 수행하기 때문에 ... – user387184