У меня есть приложение, которое содержит действие с текстовым полем и кнопкой, и службу, которая использует это имя, введенное пользователем в текстовое поле. После того как я ввожу имя и Запустить службу (на кнопке Click), я называю финиш(), чтобы уничтожить активность, как показано в коде ниже:Использование метода finish() в действии
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_start);
Log.e("onCreate", "Activity");
final Button button = (Button) findViewById(R.id.startServiceBTN);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
EditText mEdit = (EditText) findViewById(R.id.nameTB);
if (!hit) {
hit = true;
if (mEdit.getText().toString().trim().length() > 0) {
Intent intent = new Intent(StartActivity.this, BLEService.class);
intent.putExtra("Name", mEdit.getText().toString());
startService(intent);
StartActivity.this.finish();
} else {
Toast.makeText(getApplicationContext(),
"Please Enter a Valid Name", Toast.LENGTH_LONG)
.show();
}
}
}
});
}
Проблема, которую я лицо, хотя я называю финишная(), Я мог видеть активность приложений в недавно открывшемся приложении Icon Tray (справа от самой мягкой кнопки), которая находится рядом с кнопкой Back и Home на Nexus 5.
При нажатии на приложение в недавно открывшемся приложении лоток , Я получаю приложение обратно с пустым текстовым полем. Поэтому я модифицировал приведенный выше код с помощью проверки перед нажатием кнопки setOnClickListener, чтобы убедиться, что при возврате к активности я предварительно заполняю текстовое поле с введенным пользователем текстом, используя нижеприведенный фрагмент кода.
if (hit) {
EditText mEdit = (EditText) findViewById(R.id.nameTB);
mEdit.setText(BLEService.NameFromActivity);
finish();
}
Хотя выше фрагмент кода помогает в поле Text, чтобы не иметь нулевое значение, то App активность снова доступна в Recent Apps Tray.
Вот моя проблема. Если я пропустил/запустил приложение в ленте «Недавние приложения», чтобы полностью очистить его, я начинаю получать значение null в качестве значения Name в журналах служб вместо имени, введенного пользователем.
Стоит сказать, что приложения, которые перечислены в приложениях _recent list_ не обязательно являются активными в памяти (проверьте это: http://android.stackexchange.com/questions/47652/do-applications-that-remain -в-последние-приложения-список-нитепритягиватель-ресурсы). – Trinimon
@Trinimon: Вы правы. Спасибо за ссылку. –
Hi Spring Breaker, Спасибо за ответ. Включение excludeFromRecents делает для журнала только NULL значение вместо NAME. Мне нужно как-то сохранить значение (НАЗВАНИЕ) из активности до уничтожения объекта Activity. Я буду проверять с помощью SharedPrefs и обновлять здесь. –