0

저는 인터넷에서 이미지를 다운로드하는 서비스를 제공합니다. 이 작업이 끝나면이 이미지를 대화 상자 테마가있는 사용자 지정 Activity에 표시하려고합니다. 하지만 앱이 실행 중일 때만이 팝업을 사용하고 싶습니다. 그렇지 않으면 알림을 만들고 싶습니다.Android : 내 활동에서 내 서비스에서 새로운 활동을 시작하는 방법을 알려주십시오.

하지만 내 서비스에서 활동을 시작하려고 시도 할 때 예외가 발생하고 이것이 올바른 방법이 아닌 것 같습니까?

은 말한다 :이 그 플래그를 설정하거나 어떻게 활동에 내 서비스에서 내 다운로드 한 이미지를 받아야하여이 작업을 수행 할 수있는 올바른 방법 인 경우

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 

그래서 내 질문입니다. 내 활동 클래스에서 새로운 활동을 시작하도록 활동에 대해 어떤 식 으로든 말할 수 있습니까?

+1

i.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); –

+0

@ NaveenTamrakar는 내가 성취하고자하는 최선의 해결책입니까? – Danjoa

답변

3

브로드 캐스트 수신기를 사용하는 것이 더 좋은 선택이라고 생각합니다.

아래 메서드를 Service에 추가하고 이미지 다운로드가 완료되면이 메서드를 호출하십시오.

private void updateMyActivity(Context context) { 
    if(MainActivity.activityStatusFlag){ 
     //update the activity if activityStatusFlag=true; 
     Intent intent = new Intent("mUpdateActivity"); 
     context.sendBroadcast(intent);   
    }else{ 
     //display notification if activityStatusFlag=false; 
    } 
} 

활동 내역 아래 코드 추가를 참조하십시오.

public class MainActivity extends Activity{ 
    public static boolean activityStatusFlag= false; 
     //define this variable to check if activity is running or not. 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     activityStatusFlag = true; 
     this.getApplicationContext(). 
     registerReceiver(mMessageReceiver,new IntentFilter("mUpdateActivity")); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     activityStatusFlag = false; 
     this.getApplicationContext().unregisterReceiver(mMessageReceiver); 
    } 

    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
       //Display Popup or update Activity 
     } 
    }; 
} 
+0

이것이 내가 그렇게해야한다고 생각한 방법입니다. 고맙습니다! intent.putExtra()를 추가했습니다. 에서 updateMyActivity() 메소드를 호출 한 다음 방송 수신자의 onRecieve()에서 가져 왔습니다. 잘 했어! – Danjoa