android2018. 9. 13. 17:24

Sample code 

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


Button btn = (Button)findViewById(R.id.button);

btn.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View v) {


Intent intent = new Intent(MainActivity.this, MainActivity.class );
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP );
intent.putExtra("aaa",1);
intent.putExtra("bbb",2);
intent.putExtra("ccc",3);

startActivity(intent);
}
}

);


}

@Override
protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);
Log.d("easy", "onNewIntent called");
if ( null != intent){
int defaultValue = 0;
Log.d("easy", "aaa : "+intent.getIntExtra("aaa",0));
Log.d("easy", "bbb : "+intent.getIntExtra("bbb",0));
Log.d("easy", "ccc : "+intent.getIntExtra("ccc",0));
}

}
}

Activity가 foreground로 동작하고 있을 때, 해당 Activity로 startActivity를 호출할 경우 onNewIntent Callback이 호출된다. 


주의) addFlag를 추가하지 않으면 실행되지 않음


결과 : 


09-13 17:21:41.448  7123  7123 D easy    : onNewIntent called

09-13 17:21:41.448  7123  7123 D easy    : aaa : 1

09-13 17:21:41.448  7123  7123 D easy    : bbb : 2

09-13 17:21:41.448  7123  7123 D easy    : ccc : 3

Posted by easy16