- 浏览: 1099942 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
baiyi168:
非常有用,多谢楼主
Android中的一个TextView中的字体设置不同大小 -
qq271629261:
[img] ...
android开发工具 Eclipse+Android SDK+ADT -
txlong_onz:
haotainan 写道Activity伪造Dialog,这个 ...
Activity伪造Dialog的时候不能全屏显示 -
haotainan:
Activity伪造Dialog,这个Dialog显示的时候界 ...
Activity伪造Dialog的时候不能全屏显示 -
gangbener:
cainingyouyou 写道7楼的,tag,怎么解决的啊1 ...
android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
在应用中肯定遇到有这样的问题,在应用中在于多的Activity中跳转,这些Activity都存在Activity栈中了。所以按返回键的时候都是一个一个的将原来的Activity弹回。如果我们想捕获到back事件之后直接退出整个程序,就要思考了。特别是2.2之后的安全机制考虑之后。
粘贴点代码,以备之后使用。
package com.jftt; import android.app.Activity; import android.app.ActivityManager; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class TestLogout extends Activity { public static final String TAG = TestLogout.class.getSimpleName(); private Button btn1; private Button btn2; private Button btn3; private Button btn4; private Button btn5; private Button go; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.logout); this.onStart(); btn1 = (Button) findViewById(R.id.btn1); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { android.os.Process.killProcess(android.os.Process.myPid()); // 获取PID } }); btn2 = (Button) findViewById(R.id.btn2); btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.exit(0); // 常规java、c#的标准退出法,返回值为0代表正常退出 } }); btn3 = (Button) findViewById(R.id.btn3); btn3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.i(TAG, "close " + getPackageName()); ActivityManager am = (ActivityManager) TestLogout.this .getSystemService(Context.ACTIVITY_SERVICE); am.restartPackage(getPackageName()); // am.killBackgroundProcesses(getPackageName()); } }); btn4 = (Button) findViewById(R.id.btn4); btn4.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); // intent.setClass((B或者C或者D).this, A.class); intent.setClass(TestLogout.this, TestLogout.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("flag", 1); startActivity(intent); } }); //此方法并未杀掉应用程序 而是把launcher调起 btn5 = (Button) findViewById(R.id.btn5); btn5.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME); startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startMain); } }); go = (Button) findViewById(R.id.go); go.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(TestLogout.this, TestLogout.class); // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); } }); } protected void onStart() { super.onStart(); Intent intent = getIntent(); int x = intent.getIntExtra("flag", -1); if (x == 0) { finish(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { AlertDialog.Builder alertbBuilder = new AlertDialog.Builder(this); alertbBuilder.setIcon(R.drawable.icon).setTitle("友情提示...").setMessage("你确定要离开吗?"); alertbBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 结束这个Activity int nPid = android.os.Process.myPid(); android.os.Process.killProcess(nPid); } }); alertbBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }).create(); alertbBuilder.show(); } return true; } }
package com.jftt; import java.util.Stack; import android.app.Activity; public class ActiivtyStack { private static Stack<Activity> mActivityStack; private static ActiivtyStack instance; private ActiivtyStack() { } public static ActiivtyStack getScreenManager() { if (instance == null) { instance = new ActiivtyStack(); } return instance; } // 退出栈顶Activity public void popActivity(Activity activity) { if (activity != null) { activity.finish(); mActivityStack.remove(activity); // mActivityStack.pop(); activity = null; } } // 获得当前栈顶Activity public Activity currentActivity() { Activity activity = mActivityStack.lastElement(); // Activity activity = mActivityStack.pop(); return activity; } // 将当前Activity推入栈中 public void pushActivity(Activity activity) { if (mActivityStack == null) { mActivityStack = new Stack<Activity>(); } mActivityStack.add(activity); // mActivityStack.push(activity); } // 退出栈中所有Activity public void popAllActivityExceptOne(Class<Activity> cls) { while (true) { Activity activity = currentActivity(); if (activity == null) { break; } if (activity.getClass().equals(cls)) { break; } popActivity(activity); } } }
logout.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/btn1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="logout button1" /> <Button android:id="@+id/btn2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="logout button2" /> <Button android:id="@+id/btn3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="logout button3" /> <Button android:id="@+id/btn4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="go to first" /> <Button android:id="@+id/btn5" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="go to launcher" /> <Button android:id="@+id/go" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="go another activity" /> <!-- <EditText android:id="@+id/et01" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <ImageView android:id="@+id/iv01" android:layout_width="wrap_content" android:layout_height="wrap_content" /> --> </LinearLayout>
manifest中的权限:
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> <uses-permission android:name="android.permission.RESTART_PACKAGE" />
- TestDemo.7z (40.4 KB)
- 下载次数: 143
发表评论
-
安卓自动编译工具Gradle
2015-09-02 15:15 1129https://developer.android.com ... -
图片的水平平铺效果
2014-03-10 15:45 2444Android要实现图片的水平平铺效果: 很简单也很强大, ... -
LinearLayout中的属性baselineAligned的使用
2013-10-19 18:54 34415Android线性布局中的属性主要的就是控制浮动方向的or ... -
Activity伪造Dialog的时候不能全屏显示
2013-05-31 08:42 14266使用Activity伪造Dialog的时候出现不能全屏的问 ... -
修改局部源码烧录手顺
2012-08-16 09:23 21391. 添加命令到PATH路径下,方便全局使用: andro ... -
备份我的源码烧录的sh文件
2012-07-16 10:39 1380烧录编译的img文件: 01.tofastboot.sh ... -
备份我的源码编译的sh文件
2012-07-16 10:34 1603编译命令写一次就可以了。以后直接使用。 01-extra_s ... -
ADT20安装报错
2012-06-29 23:44 9232Cannot complete the install bec ... -
ubuntu12.04(VirtualBox) 64-bit build android source
2012-05-20 17:33 30431.download VirtalBox(Virtual ... -
搭建android源码编译开发服务器
2012-05-20 17:32 73511.android服务器,其实也就是台式机器的增强版本。基本上 ... -
ADT离线安装报错
2012-04-23 09:37 3398最近使用ADT的离线zip包安装ADT总是报错。说是 Can ... -
Android源码编译中的Makefile文件
2012-04-18 09:09 25571.和大多shell文件一样,makefile中的#表示注释, ... -
遍历android根目录的简单资源查看器
2012-04-16 17:02 3771效果如图: package com.txl.sua; ... -
Nexus s与android4.0
2011-12-14 13:15 14411.内核源码链接 http://android.git.ke ... -
Android编译生成系统-译文
2011-12-08 11:21 3536生成 4.0.1 系统 下边 ... -
Android中设置TextView的颜色setTextColor
2011-11-10 11:34 182369android中设置TextView的颜色有方法setTex ... -
Android中设置activity的background为Wallpaper
2011-08-15 08:34 3905<activity android:name=&q ... -
android程序中怎么实现平铺效果
2011-08-10 17:06 4932很简单,就像window桌面图片一样,如果图片小的话就会平铺。 ... -
一个android应用向Home screen添加多个Widget
2011-08-09 15:12 5137如Twitter客户端或者HTC的日历应用,可以添加大小不 ... -
怎么实现Widget中的动画效果,如渐入等
2011-08-09 11:22 3106怎么在Widget中添加animation,如渐入渐出,淡入淡 ...
相关推荐
2 设置入口activity的启动模式android:launchMode="singleTask",重写onNewIntent方法, 在退出activity时,设置intent.setAction("exit_app");然后跳转到栈底activity, 这样就可以清除栈底之外的所有activity,...
在安卓应用开发中,页面跳转是至关重要的一个环节,它允许用户在不同的界面之间自由切换,实现应用程序的功能导航。Android Studio作为官方推荐的集成开发环境,提供了丰富的工具和技术来帮助开发者实现这一功能。本...
在Android应用开发中,Activity是应用程序的基本组成部分,用于展示用户界面和处理用户交互。Activity间的跳转动画在提升用户体验方面起着至关重要的作用。本文将深入探讨5.x之前和5.x之后Android系统中Activity跳转...
自定义Dialog可以使应用程序在提示用户信息或者进行选择时,展现出更符合应用风格的界面,而自定义Activity跳转样式则能使得页面间的过渡更加流畅自然。下面将详细介绍这两个方面的实现方法。 首先,我们来探讨如何...
在Android开发中,Activity是应用程序的基本构建块,用于表示用户界面。当用户在应用中进行操作,如点击按钮或选择菜单项时,通常会触发Activity之间的跳转。在这个过程中,Android提供了丰富的动画效果来增强用户...
在Android中,单纯调用`System.exit(0)`或`android.os.Process.killProcess(android.os.Process.myPid())`并不能确保应用程序中的所有Activity都被完全关闭,尤其是当应用程序中有多个Activity栈存在时。这种情况下...
本文实例讲述了Android编程之退出整个应用程序的方法。分享给大家供大家参考,具体如下: 我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接...
在Android开发中,Activity的跳转动画是提升用户体验和增加应用趣味性的重要手段。本文将深入探讨"android activity跳转动画最全集合"中的各种动画效果,并解释如何在实际项目中实现这些过渡效果。 首先,Activity...
在Android开发中,Activity是应用程序的基本构建块,用于展示用户界面和处理用户交互。为了提升用户体验,Android系统允许开发者自定义Activity之间的跳转动画,使应用看起来更加生动和专业。本篇文章将深入探讨如何...
Android应用中的Activity有多个状态,包括创建(Created)、启动(Started)、运行(Resumed)、暂停(Paused)、停止(Stopped)和销毁(Destroyed)。当用户离开应用或设备进入休眠模式时,Activity会从Resumed...
- 这种方法适用于有多个Activity相互跳转的应用,通过监控Activity栈的状态来决定是否退出。 这两种方法各有优缺点。第一种方法对用户交互更友好,但可能增加误操作的风险;第二种方法则更直接,但可能忽视了用户...
在Android应用开发中,Activity是应用程序的基本组件,用于展示用户界面和处理用户交互。Activity间的跳转是Android应用中常见的操作,而通过自定义动画,我们可以使这些跳转变得更加生动和吸引人。"activity跳转...
在Android开发中,Activity是应用程序的基本构建块,用于表示用户界面和交互。Activity之间的跳转是Android应用中常见的操作,通常伴随着用户导航或任务切换。本教程将深入探讨如何在Android中实现不同Activity间的...
在Android开发过程中,有时我们需要实现一个“一键退出”功能,即用户点击某个按钮后能够迅速且干净地关闭整个应用程序。这不仅可以提升用户体验,还能确保程序资源得到及时释放。本文将详细介绍一种在Android中实现...
大家使用Android的原生UI都知道,Android的Activity跳转就是很生硬的切换界面。其实Android的Activity跳转可以设置各种动画。下面给大家看看效果: 实现非常简单,用overridePendingtransition(int inId, int outId)...
Android应用程序通常由多个Activity组成,它们之间通过Intent进行通信,实现页面间的跳转。 1. **Intent的创建与使用** Intent是Android中用于启动服务、启动或切换Activity的意图对象。创建Intent时,我们通常...
在Android开发中,应用程序通常由多个`Activity`组成,而这些`Activity`之间通过不同的生命周期进行管理与切换。为了确保用户在退出应用时能够得到良好的体验,实现一个完整的、优雅的退出机制显得尤为重要。本文将...
在Android应用开发中,"自动跳转界面"是一项常见的需求,尤其在首次启动应用程序时,开发者通常希望用户能够快速地进入注册或登录流程。本文将详细介绍如何实现这一功能,并结合动画效果,为初学者提供一个良好的...
Activity A跳转Activity B,再按返回键,A、B的生命周期执行顺序是什么? 当听到这个题目的时候,我得意地笑了笑,对于Activity的生命周期已经记熟的我,心想,为什么不直接问Activity的生命周期呢?于是想当然的说...