[英]How to restart/relaunch application programatically if it crashes in Android?
[英]Restart Android activity on relaunch of application
我在一個Android應用程序中進行了3個活動。 當我在每個活動中按返回按鈕時,應用程序將退出。 使用以下代碼。
當我從第三個活動中按回去時,應用程序退出正常,但是當我通過單擊應用程序圖標重新啟動該應用程序時,第三個活動將再次啟動。 但是在這種“重新啟動”時,我需要啟動我的主要活動。
我嘗試在“ onResume”上編寫代碼,但無法正常工作。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
moveTaskToBack(true);
return true;
}
return super.onKeyDown(keyCode, event);
}
請幫我。 提前致謝
您可以使用以下方式解決此問題:在您的第三個Activity類中,輸入以下代碼,
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
startActivity(new Intent(getBaseContext(), YourSecondActivity.class));
finish();
}
同樣的方法,您可以參加第二個活動課程
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
startActivity(new Intent(getBaseContext(), YourFirstActivity.class));
finish();
}
最后,您可以將其放入您的主班
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
在活動A中-調用startActivity(B)時,也調用finish()。 范例-
public void onButtonClick() // Some method { startActivity(intentForB); finish(); }
同樣,從B轉到C時-
public void onButtonClick() { startActivity(intentForC); finish(); }
當用戶使用Activity C並按下后退按鈕時,應用程序將關閉(無需顯式編寫后退按鈕處理)。
希望這可以幫助。
moveTaskToBack()
將包含此活動的任務移到活動堆棧的后面。
在OnBackpressed()
並在所有活動中使用finish()
。 (因為您說您想在按返回按鈕后完成所有活動)
public void OnBackpressed()
{
finish();
}
簡而言之,在您的代碼中執行以下操作:
activity 1
Intent intent=new Intent(activity1.this,activity2.class);
startActivity(intent);
finish();
activity 2
Intent intent=new Intent(activity2.this,activity3.class);
startActivity(intent);
finish();
如果在前兩個活動中使用了此功能,則在第三個活動中無需處理OnBackpressed()
。 因為當活動檢測到用戶按下返回鍵時將調用OnBackpressed()
。 默認實現只是完成當前活動,但是您可以覆蓋此活動以執行所需的任何操作。
在第一次啟動活動中,請在您的AndroidManifest.xml和android:clearTaskOnLaunch =“ true”中使用此代碼。
<activity
android:name="com.example.package.SplashActivity"
android:label="@string/app_name"
android:clearTaskOnLaunch="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
如果要使用按鍵事件,請在您的活動中使用以下代碼:
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
boolean result = false;
switch(event.getKeyCode())
{
case KeyEvent.KEYCODE_BACK:
finish(); // or moveTaskToBack(true);
result = true;
break;
default:
result= super.dispatchKeyEvent(event);
break;
}
return result;
}
如果要退出所有3個Activity,則必須在啟動新Activity時使用finish()
關閉當前Activity。
在首次啟動活動中,請在您的AndroidManifest.xml和android:launchMode =“ singleTop”中使用此代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.