Android 如何在没有完成的情况下刷新页面?
我正在使用此代码刷新页面,此代码刷新页面,但我无法转到其他页面,因为它一直在重新加载同一页面。我希望它只在我单击它时自动刷新页面,并且我希望能够移动到其他页面Android 如何在没有完成的情况下刷新页面?,android,Android,我正在使用此代码刷新页面,此代码刷新页面,但我无法转到其他页面,因为它一直在重新加载同一页面。我希望它只在我单击它时自动刷新页面,并且我希望能够移动到其他页面 enter code here public void refresh(int milliseconds){ final Handler handler = new Handler(); final Runnable runnable = new Runnable() { @Override
enter code here
public void refresh(int milliseconds){
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
finish();
overridePendingTransition( 0, 0);
startActivity(getIntent());
overridePendingTransition( 0, 0);
}
};
handler.postDelayed(runnable,milliseconds);
}
您只需使用相关数据更新UI,而不是关闭并重新打开活动。 您还可以使用
LiveData
和ViewModel
使数据始终显示在屏幕上,而不是手动检查是否有新数据可用
实时数据
LiveData是一个可观察的数据持有者类。不像普通人
可观察的LiveData是生命周期感知的,这意味着它尊重
其他应用程序组件的生命周期,如活动、片段或
服务。这种意识确保LiveData只更新应用程序组件
处于活动生命周期状态的观察者
@丹尼尔的回答是非常合理的,但是,如果你仍然想重新加载的目的,上帝知道你可以做到这一点,而无需启动一个新的线程很多方式的页面 实现SwipeToRefreshLayout,比启动新线程更好 然后 或者,如果您正在使用按钮,只需拨打电话
finish();
startActivity(getIntent());
您可以实现
startActivity(getIntent())代码>无finish()代码>,但要注意向堆栈中添加无用的活动。当您想要刷新数据时,请使用Daniel B.所说的LiveData。
您当前正在使用finish()
销毁活动,并尝试再次启动同一活动。finish()
方法在活动生命周期中启动ondestory()
方法。所以在最后调用这个方法您的方式不是如何刷新活动的数据。
但如果要在单击按钮时重新启动活动,请参见下面的代码:
void restartActivity(View view){
Intent i = new Intent(this, ActivityClassWhichYouWantToStart.class);
startActivity(i);
finish();
}
请在上面添加函数的地方发布代码。您可以使用recreate()函数,它将直接刷新活动。>API11
void restartActivity(View view){
Intent i = new Intent(this, ActivityClassWhichYouWantToStart.class);
startActivity(i);
finish();
}
public void refresh(int milliseconds){
final Handler handler = new Handler();
final Runnable runnable = new Runnable() {
@Override
public void run() {
recreate();
}
};
handler.postDelayed(runnable,milliseconds);
}