精华内容
下载资源
问答
  • android点击按钮退出app
    千次阅读
    2021-12-21 09:24:13
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); finish();

    将代码放在按钮点击事件里就可以了

    更多相关内容
  • 本文实例讲述了Android实现长按back键退出应用程序的方法。分享给大家供大家参考。具体分析如下:最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序。在网上查找了很多资料,发现几乎...

    本文实例讲述了Android实现长按back键退出应用程序的方法。分享给大家供大家参考。具体分析如下:

    最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序。在网上查找了很多资料,发现几乎没有这样的实现,大部分在处理时是双击back键来退出应用程序。参考了一下双击back键退出应用程序的代码,网上主流的一种方法是下面这种方法,实现起来比较简单:

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event)

    {

    if (keyCode == KeyEvent.KEYCODE_BACK)

    {

    if ((System.currentTimeMillis() - mExitTime) > 2000)

    {

    mHelperUtils.showToast(mContext, R.string.exit_content);

    mExitTime = System.currentTimeMillis();

    }

    else

    {

    finish();

    }

    return true;

    }

    return super.onKeyDown(keyCode, event);

    }

    从上面的代码可以看出,采用的思路就是连续两次点击back键的时间间隔在2s以内,则认为是双击,从而退出程序。

    因此,借鉴上面的思路,我的最初想法是:可以重写onKeyDown方法和onKeyUp方法,计算这执行这两个方法之间的时间间隔,如果大于2s,则认为是长按,从而退出程序;否则,则执行back键原有的响应。按照这个思路:

    public boolean onKeyDown(int keyCode, KeyEvent event)

    {

    if (keyCode == KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0)

    {

    start=System.currentTimeMillis();

    Log.e("start",String.valueOf(start));

    return false;

    }

    return super.onKeyDown(keyCode, event);

    }

    public boolean onKeyUp(int keyCode,KeyEvent event)

    {

    if (keyCode == KeyEvent.KEYCODE_BACK &&event.getRepeatCount()==0)

    {

    end=System.currentTimeMillis();

    Log.e("end",String.valueOf(end));

    if(start!=-1&&(end-start)>2000)

    {

    AlertDialog.Builder builder = new Builder(MainActivity.this);

    builder.setMessage("确认退出吗?");

    builder.setTitle("提示");

    builder.setPositiveButton("确认",new DialogInterface.OnClickListener()

    {

    public void onClick(DialogInterface dialog,int which)

    {

    dialog.dismiss();

    MainActivity.this.finish();

    System.exit(0);

    }

    });

    builder.setNegativeButton("取消",new DialogInterface.OnClickListener()

    {

    public void onClick(DialogInterface dialog,int which)

    {

    dialog.dismiss();

    }

    });

    builder.create().show();

    return true;

    }

    else

    {

    return super.onKeyUp(keyCode, event);

    }

    }

    return super.onKeyUp(keyCode, event);

    }

    然而,这样能够实现长按back键退出程序,但是非长按back键的时候,点击back则失效了,查找了很多Android 按键事件分发和处理机制方面的资料,还是没弄清楚原因(后面有时间再研究)。于是考虑换一种思路去处理,考虑去重写Activity中的dispatchKeyEvent方法。

    public boolean dispatchKeyEvent(KeyEvent event)

    {

    int keyCode=event.getKeyCode();

    //Log.e("start",String.valueOf(start));

    switch(keyCode)

    {

    case KeyEvent.KEYCODE_BACK:

    if(event.isLongPress())

    //这句很重要,判断事件是否是长按事件

    {

    AlertDialog.Builder builder = new Builder(MainActivity.this);

    builder.setMessage("确认退出吗?");

    builder.setTitle("提示");

    builder.setPositiveButton("确认",new DialogInterface.OnClickListener()

    {

    public void onClick(DialogInterface dialog,int which)

    {

    dialog.dismiss();

    MainActivity.this.finish();

    System.exit(0);

    }

    });

    builder.setNegativeButton("取消",new DialogInterface.OnClickListener()

    {

    public void onClick(DialogInterface dialog,int which)

    {

    dialog.dismiss();

    }

    });

    builder.create().show();

    return true;

    }

    return super.dispatchKeyEvent(event);

    //如果不是长按,则调用原有方法,执行按下back键应有的处理

    default:

    break;

    }

    return super.dispatchKeyEvent(event);

    }

    最后通过重写dispatchKeyEvent方法实现了长按back键退出程序,而且没有屏蔽掉原有的非长按back键功能。

    希望本文所述对大家的Android程序设计有所帮助。

    展开全文
  • 本文实例讲述了Android实现长按back键退出应用程序的方法。分享给大家供大家参考。具体分析如下:最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序。在网上查找了很多资料,发现几乎...

    本文实例讲述了Android实现长按back键退出应用程序的方法。分享给大家供大家参考。具体分析如下:

    最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序。在网上查找了很多资料,发现几乎没有这样的实现,大部分在处理时是双击back键来退出应用程序。参考了一下双击back键退出应用程序的代码,网上主流的一种方法是下面这种方法,实现起来比较简单:

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event)

    {

    if (keyCode == KeyEvent.KEYCODE_BACK)

    {

    if ((System.currentTimeMillis() - mExitTime) > 2000)

    {

    mHelperUtils.showToast(mContext, R.string.exit_content);

    mExitTime = System.currentTimeMillis();

    }

    else

    {

    finish();

    }

    return true;

    }

    return super.onKeyDown(keyCode, event);

    }

    从上面的代码可以看出,采用的思路就是连续两次点击back键的时间间隔在2s以内,则认为是双击,从而退出程序。

    因此,借鉴上面的思路,我的最初想法是:可以重写onKeyDown方法和onKeyUp方法,计算这执行这两个方法之间的时间间隔,如果大于2s,则认为是长按,从而退出程序;否则,则执行back键原有的响应。按照这个思路:

    public boolean onKeyDown(int keyCode, KeyEvent event)

    {

    if (keyCode == KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0)

    {

    start=System.currentTimeMillis();

    Log.e("start",String.valueOf(start));

    return false;

    }

    return super.onKeyDown(keyCode, event);

    }

    public boolean onKeyUp(int keyCode,KeyEvent event)

    {

    if (keyCode == KeyEvent.KEYCODE_BACK &&event.getRepeatCount()==0)

    {

    end=System.currentTimeMillis();

    Log.e("end",String.valueOf(end));

    if(start!=-1&&(end-start)>2000)

    {

    AlertDialog.Builder builder = new Builder(MainActivity.this);

    builder.setMessage("确认退出吗?");

    builder.setTitle("提示");

    builder.setPositiveButton("确认",new DialogInterface.OnClickListener()

    {

    public void onClick(DialogInterface dialog,int which)

    {

    dialog.dismiss();

    MainActivity.this.finish();

    System.exit(0);

    }

    });

    builder.setNegativeButton("取消",new DialogInterface.OnClickListener()

    {

    public void onClick(DialogInterface dialog,int which)

    {

    dialog.dismiss();

    }

    });

    builder.create().show();

    return true;

    }

    else

    {

    return super.onKeyUp(keyCode, event);

    }

    }

    return super.onKeyUp(keyCode, event);

    }

    然而,这样能够实现长按back键退出程序,但是非长按back键的时候,点击back则失效了,查找了很多Android 按键事件分发和处理机制方面的资料,还是没弄清楚原因(后面有时间再研究)。于是考虑换一种思路去处理,考虑去重写Activity中的dispatchKeyEvent方法。

    public boolean dispatchKeyEvent(KeyEvent event)

    {

    int keyCode=event.getKeyCode();

    //Log.e("start",String.valueOf(start));

    switch(keyCode)

    {

    case KeyEvent.KEYCODE_BACK:

    if(event.isLongPress())

    //这句很重要,判断事件是否是长按事件

    {

    AlertDialog.Builder builder = new Builder(MainActivity.this);

    builder.setMessage("确认退出吗?");

    builder.setTitle("提示");

    builder.setPositiveButton("确认",new DialogInterface.OnClickListener()

    {

    public void onClick(DialogInterface dialog,int which)

    {

    dialog.dismiss();

    MainActivity.this.finish();

    System.exit(0);

    }

    });

    builder.setNegativeButton("取消",new DialogInterface.OnClickListener()

    {

    public void onClick(DialogInterface dialog,int which)

    {

    dialog.dismiss();

    }

    });

    builder.create().show();

    return true;

    }

    return super.dispatchKeyEvent(event);

    //如果不是长按,则调用原有方法,执行按下back键应有的处理

    default:

    break;

    }

    return super.dispatchKeyEvent(event);

    }

    最后通过重写dispatchKeyEvent方法实现了长按back键退出程序,而且没有屏蔽掉原有的非长按back键功能。

    希望本文所述对大家的Android程序设计有所帮助。

    展开全文
  • 如果用户在屏幕上显示此消息时再次单击后退按钮,我希望应用程序退出,但当消息消失且用户单击后退按钮时,我希望消息再次出现。我在Java中看到过一些这样的例子,但是我发现很难让这些例子适用于Xamarin.Android。 ...

    在我的MainActivity中,我像那样覆盖了OnBackPressed()方法

    public override void OnBackPressed()

    {

    Toast toast = Toast.MakeText(this, "Press again to exit", ToastLength.Short);

    toast.SetMargin(0,0.20f);

    toast.Show();

    }

    当用户处于MainActivity并单击后退按钮一次时,屏幕上会显示消息“再按一次退出”,此消息在几秒钟后消失。如果用户在屏幕上显示此消息时再次单击后退按钮,我希望应用程序退出,但当消息消失且用户单击后退按钮时,我希望消息再次出现。我在Java中看到过一些这样的例子,但是我发现很难让这些例子适用于Xamarin.Android。

    答案

    这段代码工作正常。

    long lastPress;

    public override void OnBackPressed()

    {

    // source https://stackoverflow.com/a/27124904/3814729

    long currentTime = DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond;

    // source https://stackoverflow.com/a/14006485/3814729

    if (currentTime - lastPress > 5000)

    {

    Toast.MakeText(this, "Press back again to exit", ToastLength.Long).Show();

    lastPress = currentTime;

    }

    else

    {

    base.OnBackPressed();

    }

    }

    如果您想使用短吐司长度,请更改时间。

    ToastLength.Long = 3500(ms)

    ToastLength.Short = 2000(ms)

    另一答案

    Toast toast = Toast.MakeText(Application.Context, "Press again to exit", ToastLength.Short);

    bool doubleBackToExitPressedOnce = false;

    public override void OnBackPressed()

    {

    if (doubleBackToExitPressedOnce)

    {

    toast.Cancel();

    base.OnBackPressed();

    return;

    }

    toast.SetMargin(0, 0.20f);

    toast.Show();

    this.doubleBackToExitPressedOnce = true;

    new Handler().PostDelayed(() =>

    {

    doubleBackToExitPressedOnce = false;

    }, 2000);

    }

    另一答案

    我建议的最可靠的方法是这样的:

    public static bool doubleBackToExitPressedOnce=true

    public override void OnBackPressed()

    {

    if (doubleBackToExitPressedOnce)

    {

    FinishAffinity();

    }

    Common.FragmentManager.doubleBackToExitPressedOnce = true;

    Toast.MakeText(this, Resources.GetString(Resource.String.back_click_on_home), ToastLength.Short).Show();

    new Handler().PostDelayed(new RunnableHelper(), 2000);

    }

    public class RunnableHelper : Java.Lang.Object, IRunnable

    {

    public void Run()

    {

    doubleBackToExitPressedOnce = false;

    }

    }

    展开全文
  • 方法一:2秒内点击两次返回键退出 private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == ...
  • 前言在 Android开发中,会经常存在 “一键退出App” 的需求但市面上流传着 太多不可用的“一键退出App”功能实现本文将全面总结“一键退出App”的实现方式,并为你一一实践,希望你们会喜欢。前言image.png1. 需求...
  • 1、最简单的方法 直接在每个activity跳转到其他activity的button上添加finish()让它销毁 但是这样会导致用户不能再度返回到这个activity 2、《第一行代码》郭霖提供的方法
  • 简单实现android确定和退出按钮 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app=...
  • Android 关于 App 退出

    2020-04-08 17:32:10
    Android 关于 App 退出 System.exit(0); 如果在finish()之后就调用上面代码,销毁activity的 onStop() 和 onDestory() 并不会执行。
  • 一键退出APP的思路: 关闭所有的Activity(不需要kill进程) 首先,创建一个activity管理类,代码如下: /** * Activity管理器:用于Activity管理和应用程序退出 */ public class ActivityCollector { ...
  • Android 点击按钮弹出输入框和选择框

    千次阅读 2022-01-19 17:58:23
    参考 1、输入框: final EditText inputServer = new EditText(this); inputServer.setFilters(new InputFilter[]{new InputFilter....builder.setTitle(“个性点的签名”).setIcon(android.R.drawable.ic_di
  • 在用户使用手机打开app时如果想要退出应用提示是否退出对话框做法在onKeyDown方法中监控用户是否按的是回退键 并且回退栈里面没有其他activitykeyCode等于KeyEvent.KEYCODE_BACK 和event.getRepeatCount()等于0的...
  • 使用前引入improt {Platform,BackHandler} from react nativecomponentDidMount() {if (Platform.OS === 'android'){BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid);}}...
  • 也就是双击双击返回键退出应用,接下来我们就用几种办法来实现这个功能效果图实现第一种办法响应Activity的 onKeyUp事件,两次点击时间大于2秒钟就不响应,小于2秒钟就退出程序代码://记录用户首次点击返回键的时间...
  • ) 文章目录 一、问题的提出 二、activity多次回跳问题的解决 三、点击返回按钮不退出app 第一种:点击两次按钮退出app 第二种:单击回到桌面,APP在后台运行 一、问题的提出 2019年十二月,我遇到了一个问题。...
  • 在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序。第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键...
  • android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效。如果有A,B,C三个Activity,而想在B或C中...
  • Android 彻底退出自己APP 并杀掉所有相关的进程 彻底杀掉 App 相关进程的代码 public void killAppProcess() { //注意:不能先杀掉主进程,否则逻辑代码无法继续执行,需先杀掉相关进程最后杀掉主进程 ...
  • 最近项目遇见个问题, 正常的情况下是,系统自带的返回键,连续点击两次,推出程序, 但是!!! 退出程序后又重新启动了, 原因是有的activity没有进行finish 解决方法如下, 更多解决方案
  • android 退出按钮

    千次阅读 2013-09-03 22:41:00
    很多用户在使用Android手机的时候,在退出程序时都习惯按屏幕上的返回键,要想对此操作进行监听,就要复写一个操作方法,对按键进行监听。   在main.xml中 "1.0" encoding="utf-8"?> ...
  • Android实现点击两次退出APP 这两天在做一个项目碰到这么个问题,需要主界面点击两次直接退出整个APP而不是返回上一个界面,查找了网上的资料,整合和修改了一下写了这篇博客。 这里我主要以我的项目为例,...
  • 当我在这个片段上并点击后退按钮时,我的应用程序将关闭. 我想回到之前加载的片段. 我该怎么做才能强迫这种行为? public class WebBrowserFragment extends Fragment { WebView mWebView; ProgressBar progressB = ...
  • 点击返回按钮回到桌面但是不退出app,使app在后台运行 第一种:点击两次按钮退出app 设计: ①重写onBackPressed方法 onBackPressed() 捕获后退键按钮back的信息 ②currentTimeMills 返回毫秒级别的系统时间 ③放在...
  • 退出APP时,往往会用Toast提醒用户再次点击退出按钮来退出程序,这样可以防止用户不小心按到退出按钮导致程序退出。 今天就尝试着实现在第一次按下返回按钮的两秒中后再次按下返回按钮来退出程序,否则不会退出。 ...
  • Himanshu Ganoliya6navigationandroid我正在使用android的导航架构组件进行演示.我有activity两个fragments.在活动的xml中,我添加了以下代码 -android:id="@+id/main_container"android:name="androidx.navigation....
  • 先上效果图:下面是用到的背景图或按钮的图片经过查找资料和参考了一下例子后才知道,要实现这种效果很简单.就是在设置alertDialog的contentView.以下的代码是写在Activity下的,代码如下:public boolean onKeyDown(int...
  • 第一种方式:复写webview... <category android:name="android.intent.category.BROWSABLE" />    android:host="host"  android:pathPrefix="/deduct"  android:scheme="scheme" />    </activity>
  • 解决webView点击返回直接退出Activity的问题。
  • 最近的APP项目有一个需求就是连续点击两次返回按钮退出整个APP,而不是返回到上一个页面,这个连续是有时间限制的,在我的项目里,我设置成2秒钟,如果两秒之内点击了两次,就代表用户想要退出整个APP,如果大于两...
  • android的图片的浏览时候经常使用。最近在网上查找资料自己也做一个如下: package com.easyway.buttonpageflipper;...import android.app.Activity;import android.graphics.PixelFormat;import android.os....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,385
精华内容 10,154
热门标签
关键字:

android点击按钮退出app

友情链接: PWM.rar