如何使用退出和后退按钮关闭应用程序

时间:2014-02-04 09:20:47

标签: android activity-finish

在我的应用程序中,我有一个菜单页面,其中包含4个按钮历史记录,类型,好处和退出。启动Splash Screen菜单页面后。如果我启动历史记录,类型或福利活动。我没有完成菜单活动,因为如果我完成此操作然后按下导航栏应用程序关闭导航图标。当我在3个活动中的任何一个并按下设备后退按钮然后我回到菜单活动。如果那时我按下设备上的退出或后退按钮。 EndSplash启动和应用程序完成我想要的那些。但经过一秒钟的应用程序重启。如何在退出和退回按钮上关闭应用程序?

我还在操作栏下方导航标签。最低API级别8。

在菜单活动中 -

exit = (Button) findViewById(R.id.exit);
        exit.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                i = new Intent(MainActivity.this, EndSplash.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
                startActivity(i);
                finish();
            }
        });
@Override 
    public void onBackPressed() {
        super.onBackPressed();
        i = new Intent(MainActivity.this, EndSplash.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(i);
        finish();
    } 

历史,类型和福利活动 -

public void onBackPressed()  
    {    
    startActivity(new Intent(this, MainActivity.class));  
        finish();
    }

4 个答案:

答案 0 :(得分:0)

尝试这个退出应用程序: -

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

答案 1 :(得分:0)

你应该按下按钮BroadcastReceiver,你应该完成注册的所有活动。你应该在oncreate()注册所有活动。广播接收器有很多实现。

答案 2 :(得分:0)

要完成所有活动,您可以创建一个Utils.java类并在其上添加此方法:

public static List<Context> listContext = new ArrayList<Context>();

public static void finishActivities() 
{

    System.out.println("inside finishActivities:: ");

    for (Context context : Utils.listContext) {
        if(context!=null)
         ((Activity) context).finish();
    }
    Utils.listContext.clear();
}

并将您的活动上下文添加到列表中:

Utils.listContext.add(this);

并从onBackPressed()Activity调用此方法,如:

Utils.finishActivities();

答案 3 :(得分:0)

您可以使用此代码:

Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory(Intent.CATEGORY_HOME);
PackageManager pm1 = context.getPackageManager();
List<android.content.pm.ResolveInfo> activities = pm1.queryIntentActivities(homeIntent, 0);
String className = activities.get(0).activityInfo.taskAffinity;
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startMain.setPackage(className);
context.startActivity(startMain);
((Activity) context).finish();