на самом деле вы не можете создать действие, создав его экземпляр, вы должны запустить действие с помощью Intents.в вашем случае, если действие уже находится на переднем плане и является видимым для пользователя, вы должны начать действие с флагом FLAG_ACTIVITY_CLEAR_TOP
.которые отправляют новое намерение вашей текущей видимой деятельности.чтобы сделать это, вы можете использовать этот код:
context.startActivity(new Intent(this,ValuesActivity.class).putExtras(bundle).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
таким образом, если активность уже видна пользователю, тогда android вместо воссоздания активности просто отправляет новое намерение методу onNewIntent
, и вы должны переопределить этот метод вваш ValuesActivity
для получения нового намерения, отправленного вашей службой.что-то вроде этого:
public void onNewIntent(Intent intent){
String value = intent.getStringExtra(/*your key*/);
lastSyncTV.setText(value);
}
Если вы хотите проверить видимость активности, вы можете добавить статическое свойство в вашу активность public static boolean isVisible = false;
и переключить его в true в onResume
вашей активности и переключить в false в onPause
метод.затем перед startActivity
просто проверьте if(ValuesActivity.isVisible)
.