导航:首页 > 操作系统 > android再按一次退出程序

android再按一次退出程序

发布时间:2023-03-17 12:24:02

android双击返回键退出为什么又重新启动

一、实现思路:
用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态。定时器是每次用户按下返回键才去创建。
二、功能代码:
?

/**
* 菜单、返回键响应
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
exitBy2Click(); //调用双击退出函数
}
return false;
}
/**
* 双击退出函数
*/
private static Boolean isExit = false;

private void exitBy2Click() {
Timer tExit = null;
if (isExit == false) {
isExit = true; // 准备退出
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
tExit = new Timer();
tExit.schele(new TimerTask() {
@Override
public void run() {
isExit = false; // 取消退出
}
}, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务

} else {
finish();
System.exit(0);
}
}

Ⅱ android,怎么判断最后一个activity,退出程序给提示

android,判断最后一个activity可以用以下方法:

在Activity的方法中, 有一个方法isTaskRoot()方法, 这个方法可以判宴知断当前Activity是否是最后一个Activity, 如果是, 用户再按一次返回就退出当前应用, 否则回到瞎告上一个仍然活动的Activity。具体的操作步骤如下:
1、为每个Activity创建晌神消基类BaseActivity,使得每个Activity都是继承于基本的BaseActivity的。
2、复写BaseActivity的finish方法,在方法中调用isTaskRoot()判断是否是最后一个Activity,如果是给出提示。


以下给出相关重要部分代码:

publicclass BaseActivity extends Activity{

@Override
public void finish() {
super.finish();
if(isTaskRoot()){
Toast.makeText(this,"已经退出程序",Toast.LENGTH_LONG).show();
}
}
}

Ⅲ onBackPressed,onKeyDown和onKeyUp这三个事件的区别

首先,来解释一下这三个事件。
onKeyDown:是当某个按键被按下是触发。所以也有人尘族在点击返回键的时候去执行该方法来做判断。(该方法只是android 1.0~ android 2.1)薯颤
捕获判断代码数兄败:
@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
Toast.makeText(ml78.this,"返回键Back键测试",1).show();
return true;
}
return super.onKeyDown(keyCode, event);
}

onKeyUp:这个方法是当某个按键被按下后,抬起的时候执行,其实跟onKeyDown没什么差别
onBackPressed:在android 2.0开始多出了关于返回键的单独的事件方法,可以在该方法里面执行当点击返回键的时候做什么...所以,后期都是用这个方法比较多。
如果要考虑版本兼容的话,代码可这么写:
@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {
// 是否触发按键为back键
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
return true;
} else {// 如果不是back键正常响应
return super.onKeyDown(keyCode, event);
}
}
点击两次返回键退出,防止误操作

//退出时间

= 0;
//退出间隔
privatestaticfinalintBACK_PRESSED_INTERVAL= 2000;
//重写onBackPressed()方法,继承自退出的方法
@Override
publicvoidonBackPressed() {
//判断时间间隔
if(System.currentTimeMillis()-currentBackPressedTime>BACK_PRESSED_INTERVAL) {
currentBackPressedTime= System.currentTimeMillis();
Toast.makeText(this,"再按一次返回键退出程序", Toast.LENGTH_SHORT).show();
}else{
//退出
finish();
}
}

Ⅳ Android slidemenu 左滑菜单框架怎么监听菜单项的点击事件

package com.qm.test;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;

import android.graphics.Canvas;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Interpolator;
import android.widget.TextView;
import android.widget.Toast;

/*
* 主页面包装菜单、返回动画、退出事件的包装类
*/
public class ListActivityMode extends SlidingFragmentActivity {
private CanvasTransformer mTransformer;
private SlidingMenu sm;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initSlidingMenu(this);
getActionBar().setDisplayHomeAsUpEnabled(true);
}

/*
* 当主页面不可见时关闭菜单
* @see android.support.v4.app.FragmentActivity#onStop()
*/
@Override
protected void onStop() {
// TODO Auto-generated method stub
if(sm.isMenuShowing()){
sm.toggle();
}
super.onStop();
}
private long exitTime = 0;

/*
* 双击返回岁或按钮退出
* @see android.support.v4.app.FragmentActivity#onKeyDown(int, android.view.KeyEvent)
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode) {
// 判断是否在两秒之内连续点击返回键,是则退出,否则不雹物退出
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程乎肆伍序",
Toast.LENGTH_SHORT).show();
// 将系统当前的时间赋值给exitTime
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}

/*
* 菜单初始化程序
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
toggle();
return true;
}
return super.onOptionsItemSelected(item);
}

/**
* 初始化滑动菜单
*/
public void initSlidingMenu(SlidingFragmentActivity activity) {

//初始化动画效果
initAnimation(activity);

// 设置主界面视图
// activity.setContentView(R.layout.activity_main);
// 设置滑动菜单视图
activity.setBehindContentView(R.layout.menu_frame);
activity.getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new SampleListFragment()).commit();
// 设置滑动菜单的属性值
sm = activity.getSlidingMenu();
sm.setShadowWidthRes(R.dimen.shadow_width);
sm.setShadowDrawable(R.drawable.shadow);
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
sm.setFadeDegree(0.35f);
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
sm.setBehindScrollScale(0.0f);
sm.setBehindCanvasTransformer(mTransformer);
activity.setSlidingActionBarEnabled(true);

}
private Interpolator interp = new Interpolator() {
@Override
public float getInterpolation(float t) {
t -= 1.0f;
return t * t * t + 1.0f;
}
};

/**
* 初始化动画效果
*/
private void initAnimation(SlidingFragmentActivity activity) {
mTransformer = new CanvasTransformer() {
@Override
public void transformCanvas(Canvas canvas, float percentOpen) {
canvas.translate(0, canvas.getHeight() * (1 - interp.getInterpolation(percentOpen)));
}
};
}

}

java.lang.RuntimeException: Unable to start activity ComponentInfo

Android?

ViewmyWidget=findViewById(R.id.xxx);
myWidget.setXXXX;//如果上面没有找到该Widget,那么接下来如果有此类操作,就会抛空指针

所以你看看你在声明Widget的地方,找找所对应的资源文件里面,是否ID都一致了,资源文件是否引用对了

Ⅵ android回退键不触发onkeydown事件

回退键应该是调用Activity里的onBackPressed方法,你找错地方了。

Ⅶ android,onKeyUp(int keyCode, KeyEvent event) {...return true ;是什么意思

首先说明return true ,是告诉系统按键时间已经在我这里解决了,其他的地方就不高指差用再处理了,我已经把事件消耗了。
你放出的代戚皮码的意逗枯思是,第一次点击返回按钮,不返回,我只是记录你的按下按下时间,第二次按下的时候,我比较上次点击是否大于2秒了,如果在2秒内,我就退出了。(大概就是2秒内连续点击两次才退出应用,开发中经常用到)

Ⅷ android中如何添加连按两次退出键退出程序

原理就是计算两次按下的时间间隔,数值你可以自己设定,间隔小于定携芹隐的数值则认为是辩厅连续按首拦下的两次,此时退出
private long mExitTime;
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if ((System.currentTimeMillis() - mExitTime) > 800) {
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();

} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}

Ⅸ android检测返回键onBackPressed和onKeyDown区别

本篇文章介绍如何在Android中实现监听返回键,态世主键,菜单键。一般情况下,我们都可以在Android手机底部看到三个按钮,这三个按钮就分别是返回键,主键,菜单键。

接下来饥闭雀介绍监听这三个键的实现。

第一种方法通过onBackPressed()方法来实现

/**
* 注意:
* super.onBackPressed()会自动调用finish()方法,关闭当前Activity.
*/
@Override
public void onBackPressed() {
super.onBackPressed();
Toast.makeText(this, "按下了back键 onBackPressed()", Toast.LENGTH_SHORT).show();
}

onBackPressed()提供的功能有限,它这是在退出之前通知onBackPressed()方法,并不能改变用户原来的行为

利用onKeyDown方法,就可以实现

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Toast.makeText(this, "按下了back键 onKeyDown()", Toast.LENGTH_SHORT).show();
return false;
}else {
return super.onKeyDown(keyCode, event);
}
}

onKeyDown方法返回true表示退出,返回false便不退出。

还可以通过跳转来实现退出,

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}

通过onKeyDown我们可以实现,实现“再按一次返回键退出程序”的功能

private long exitTime = 0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if((System.currentTimeMillis()-exitTime) > 2000){
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}

监听Home键可以通过onUserLeaveHint()方法来实现,

@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
Toast.makeText(this, "烂早onUserLeaveHint", Toast.LENGTH_SHORT).show();
}

在这个方法中,我们可以观察出,如果onUserLeaveHint方法是不能改变用户的行为的。

在手机下方的三个键中,最右边的键就是菜单键,通常是用方括号表示的。经过笔者的测试发现,如果轻点一下,那么会跳出菜单界面,如果长点的话,那么会退出程序。这个过程会自动调用onUserLeaveHint方法,也就是主键。

菜单的监听也可以通过onKeyDown()方法来实现

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

处理上面这样的方法,onOptionsMenuClosed()方法也可以实现。

@Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
Toast.makeText(this, "onOptionsMenuClosed clicked", Toast.LENGTH_SHORT)
.show();
}
经过笔者的测试,发生这些方法在高版本中可能出现不兼容的情况,关于菜单可以查看 Android中Menu菜单

原文地址: https://www.cnblogs.com/HDK2016/p/8695052.html#a1

Ⅹ 实现android 再按一次退出程序代码


private
long
exitTime
=
0;
/**
*
捕捉返回事件按钮
*
*
因为此
Activity
继承
TabActivity

onKeyDown
无响应,所以知碰改用
dispatchKeyEvent
*
一般的
Activity

onKeyDown
就可以搭仔谈了
*/
@Override
public
boolean
dispatchKeyEvent(KeyEvent
event)
{
if
(event.getKeyCode()
==
KeyEvent.KEYCODE_BACK)
{
if
(event.getAction()
==
KeyEvent.ACTION_DOWN
&&
event.getRepeatCount()
==
0)
{
this.exitApp();
}
return
true;
}
return
super.dispatchKeyEvent(event);
}
/**
*
退出程序
*/
private
void
exitApp()
{
//
判断2次点击事件时间戚蚂
if
((System.currentTimeMillis()
-
exitTime)
>
2000)
{
Toast.makeText(MainActivity.this,
"再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime
=
System.currentTimeMillis();
}
else
{
finish();
}
}

阅读全文

与android再按一次退出程序相关的资料

热点内容
微信聊天界面源码 浏览:22
seo竞价推广点击价格算法公式 浏览:315
框架结构可以加密吗 浏览:218
python编译器怎么清除 浏览:73
linux全局socks代理 浏览:611
php微信抽奖 浏览:771
压缩算法嵌入式移植 浏览:531
php新手小例子 浏览:233
按照医生的算法一周是几天 浏览:805
三次b样条曲线算法 浏览:924
java7特性 浏览:555
爱山东app小学报名怎么知道报没报上 浏览:458
android获取wifi信号 浏览:133
娜拉美妆app怎么使用 浏览:760
有了源码要买服务器吗 浏览:365
app怎么查看自己的存款利息 浏览:515
碧蓝安卓与b站有什么区别 浏览:342
php静态块 浏览:719
ftpmget命令 浏览:475
源码时代怎样 浏览:415