从次要活动完成或退出应用程序?

时间:2013-10-17 10:15:07

标签: java android systemexit

我正在浏览活动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");

}

5 个答案:

答案 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”,就像这样

机器人:过程= “:主屏幕”