Вы достигаете этого с помощью широковещательного приемника. в вашей деятельности, которую вы хотите завершить, вам необходимо создать широковещательный приемник.
public class TestActivity extends Activity {
public static String intent_filter_finish = "com.test.finish";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
registerReceiver(finishReceiver,
new IntentFilter(intent_filter_finish));
}
@Override
protected void onDestroy() {
unregisterReceiver(finishReceiver);
super.onDestroy();
}
BroadcastReceiver finishReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
}
Теперь в вашем втором действии вам необходимо отправить трансляцию через 5 секунд, например,
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
sendBroadcast(new Intent(TestActivity.intent_filter_finish));
}
}, 5000);
}
}
или другой возможный способ непосредственно использовать postDelayed()
метод в тестовой деятельности, например,
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
finish();
}
}, 5000);
Возможный дубликат [сохранить активность происходит в фоновом режиме при переходе на другой вид деятельности?] (Http://stackoverflow.com/questions/5608833/keep-activity-going-in-background-when-switched-to -another-activity) –
Да, вы правы, но нет подходящего ответа там, как это сделать ... –
Когда вы переключаетесь на другую активность, память, занятая этим действием, освобождается, а объект 'Timer' тоже потеряно. Вот почему он не работает. Вы можете сделать это, используя контекст приложения. Напишите функцию в своем приложении, которая сама закрывается, и назовите ее из Activity –