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);
}