我正在浏览活动2,当我按下后退按钮时,它应退出或完成应用程序而不显示主要活动。我正在使用ViewPager(Activity2),如果我只在ViewPager的第一页中导航,那么代码正在backpress
中运行,此时我导航其他页面,退出或完成应用程序的代码不起作用并显示mainActivity。
MainActivity
Intent myIntent = new Intent(MainActivity.this, Activity2.class);
活性2
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
getParent().finish();
Activity a1 = (Activity)this.getBaseContext();
if(this.getParent()!=null){
Activity a = (Activity)this.getParent().getApplicationContext();
a.finish();
}
Log.i("Backpressed", "pressed");
}
答案 0 :(得分:2)
这样可行,
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
答案 1 :(得分:0)
你确定在“System.exit(0);”之后被调用,其余的代码将被调用?我记得,它不会。它应该按你想要的那样工作。
无论如何,请不要使用任何这些方法。在某些情况下,System.exit可能就足够了,但实际上它会杀死应用程序的所有线程并被认为是一种肮脏的方式。
而是从活动1调用startActivityForResult到Activity 2。然后,在活动2中调用完成并将结果设置为某个内容,并在活动1上检查结果是否退出应用程序,如果是,则也调用finish()。
答案 2 :(得分:0)
尝试将此android:noHistory="true"
添加到您的清单中
<activity
android:noHistory="true"
android:name="com.example.activities.MainPageActivity"
android:configChanges="orientation|keyboardHidden|screenSize|screenLayout"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 3 :(得分:0)
在您的MainActivity中添加finish();
您还可以在MainActivity下的Manifest中添加以下行
android:excludeFromRecents="true"
android:finishOnTaskLaunch="true"
android:noHistory="true"
答案 4 :(得分:0)
如果你正在使用kill进程..然后在backpresses中杀死所有进程..使用for循环来获取所有进程的pid ..并杀死它们......就像这样
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> list = am
.getRunningAppProcesses();
if (list != null) {
for (int i = 0; i < list.size(); ++i) {
String processid = list.get(i).processName;
String packageName = mContext.getPackageName();
if (processid.contains(packageName + ":homescreen")) {
//here homescreen is the name you given in manifest for android:process
Process.killProcess(list.get(i).pid);
}
并在每个活动的清单中添加android:process =“:anyname”,就像这样
机器人:过程= “:主屏幕”