我在一个Activity中有以下功能

public void AppExit()

{

Editor edit = preferences.edit();

edit.putString("pref_code", "");

edit.commit();

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

int pid = android.os.Process.myPid();

android.os.Process.killProcess(pid);

}

它在自己的Activity中运作良好.我想称之为另一项活动.我也创建了类实例,如下所示

Home hm = new Home();

hm.AppExit();

但它的错误是

06-29 19:41:06.024: E/AndroidRuntime(583): FATAL EXCEPTION: main

06-29 19:41:06.024: E/AndroidRuntime(583): java.lang.NullPointerException

06-29 19:41:06.024: E/AndroidRuntime(583): at android.app.Activity.startActivityForResult(Activity.java:2827)

06-29 19:41:06.024: E/AndroidRuntime(583): at android.app.Activity.startActivity(Activity.java:2933)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.mythrii.timeApp.Home.AppExit(Home.java:219)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.mythrii.timeApp.AdminPage.onOptionsItemSelected(AdminPage.java:205)

06-29 19:41:06.024: E/AndroidRuntime(583): at android.app.Activity.onMenuItemSelected(Activity.java:2205)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:748)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)

06-29 19:41:06.024: E/AndroidRuntime(583): at android.view.View$PerformClick.run(View.java:9080)

06-29 19:41:06.024: E/AndroidRuntime(583): at android.os.Handler.handleCallback(Handler.java:587)

06-29 19:41:06.024: E/AndroidRuntime(583): at android.os.Handler.dispatchMessage(Handler.java:92)

06-29 19:41:06.024: E/AndroidRuntime(583): at android.os.Looper.loop(Looper.java:130)

06-29 19:41:06.024: E/AndroidRuntime(583): at android.app.ActivityThread.main(ActivityThread.java:3683)

06-29 19:41:06.024: E/AndroidRuntime(583): at java.lang.reflect.Method.invokeNative(Native Method)

06-29 19:41:06.024: E/AndroidRuntime(583): at java.lang.reflect.Method.invoke(Method.java:507)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)

06-29 19:41:06.024: E/AndroidRuntime(583): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)

06-29 19:41:06.024: E/AndroidRuntime(583): at dalvik.system.NativeStart.main(Native Method)

有谁能够帮助我…

解决方法:

作为一般建议:不要利用操作系统.

除了常规桌面系统之外,Android(和iOS)系统通常没有您经常使用的那么多应用程序.由于大多数用户经常只使用一个装满应用程序的手,因此当您返回主屏幕时系统不会完全“杀死”应用程序,以便在再次打开时加快速度.

这将导致一些应用程序以非常快的速度启动(最常用的应用程序).但是,当Android系统需要占用资源时,它将自行解放这些资源,从而杀死一些仍在后台运行的旧应用程序.

这就是为什么你通常不应该自己终止一个应用程序.

除了上述声明外,您似乎正在尝试手动启动主屏幕.没有必要这样做!

如果您只想添加一个从应用程序返回到主屏幕的选项,请在您的活动中调用this.finish().然后,这将关闭当前活动并返回主屏幕.

最后一点,如果您希望应用程序存储有关当前状态的信息(就像您使用共享首选项一样),您应该在Activity的onStop()-method或onPause()方法中执行此操作.见Docs for more information.

无论您是自己关闭应用程序还是系统关闭它(因为它需要内存空间),Android系统都会调用此方法.

最后(也是最少),一些一般的Android编程建议:

不要使用new-operator手动创建活动.让系统执行此操作并为此目的使用Intents.

活动真的只是“墙上涂漆”.它们旨在向用户展示一些东西.应用程序代码(以及任何类型的繁重工作)几乎总是应该放入AsyncTask中.这样,您的UI将始终响应并且永远不会“冻结”,这将使用户感到紧张.

标签:android,java

来源: https://codeday.me/bug/20191003/1847046.html

java app退出登录_java – 通过从一个Activity调用一个函数,将退出按钮添加到Android App...相关推荐

  1. 关于Qt中QDialog对话框调用exec()函数界面退出造成僵尸程序问题

    关于Qt中QDialog对话框调用exec函数产生的问题 问题一: 问题描述: 原因分析: 解决方案: 问题二: 问题描述: 求助:关于这个问题,学识尚浅,求大佬分析一波 问题一: QDialog对话 ...

  2. java 手动抛异常_Java如何在没有throws签名的函数中手动抛出异常

    如果想在方法中抛出异常,像下面这样直接throw是不行的.public void test() { throw new Exception(); } 这时编译器会给我们一个错误: Error:(101 ...

  3. java退出登录_java实现注销登录

    servlet HttpServletRequest request HttpSession session=request.getSession(); session.removeAttribute ...

  4. java实现自动登录_java实现用户自动登录

    自动登录,是为了帮助用户多次使用这个网页时,不用再次输入用户名和密码就可以登录. 自动登录是指用户将用户的登录信息,人,保存到本地的文件中Cookie中. Name,value -声明时 new Co ...

  5. java 积分源码_Java生鲜电商平台-积分系统搭建与源代码下载?(小程序/APP)

    一.积分体系搭建思维导图 二.积分体系搭建第一步–制定积分基本规则 积分,是发给用户的一种虚拟货币,既然是货币,那意味着企业就要为之承担一部分营销费用,在搭建积分体系之前,一定要清晰地制定好积分的基本 ...

  6. java 微信 qq 登录_java实现 微博登录、微信登录、qq登录实现代码

    微信,微博,QQ,这是现在目前用的最多的手机 APP,我们做产品哪能不跟他们不沾边,对于登录,我想谁也不想要多少个帐号密码,根本记不住! 为了增加用户体验,用户能够快速的注册登录,第三方账号进行登录注 ...

  7. java socket gui登录_java的socket服务端的GUI

    这几天做了一个基于socket的宠物商店程序,其中服务端的图形化界面问题困扰了很久.今天终于解决,因此也对多线程有了更好的理解. 想很多新手一样,我其实犯了一个错误. 由于soket服务端端口监听用的 ...

  8. java课设电子门禁_Java 并发专题 : CyclicBarrier 打造一个安全的门禁系统

    继续并发专题~ 这次介绍CyclicBarrier:看一眼API的注释: /** * A synchronization aid that allows a set of threads to all ...

  9. java 定时器 每天凌晨_java定时器 每天凌晨 固定执行一个方法

    满意答案 x11893497 2014.05.28 采纳率:40%    等级:9 已帮助:312人 二.如果是需要Tomcat启动就能执行,不需要main方法的定时器的话: web.xml里面需要这 ...

最新文章

  1. 比JD-GUI还要好用的Luyten
  2. 隐藏input边框(ie6、ie7)
  3. 文档的管理计算机,如何使用FTP自动同步备份电脑文件数据?
  4. 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)
  5. 设置与读取C#控制台应用程序Main函数中的参数args
  6. by mybatis 自定义order_springboot2结合mybatis拦截器实现主键自动生成
  7. HyperLogLog 命令详解
  8. linux java 错误日志_求大神解决啊啊 啊,看看这个怎么了,在LINUX运行完的错误日志...
  9. 北京已开通5G基站6324个,年内目标建设超1万个5G基站
  10. 使用tftpd32烧写内核(拯救你的“砖”)
  11. 测试音响声音啸叫软件,公共广播专业音响系统啸叫声与电流声排除方法_航天广电软件...
  12. 多智能体强化学习- COMA
  13. 周志华 《机器学习初步》 绪论
  14. html实现给微信发红包看照片,微信发红包看图片效果实现
  15. Mathorcup数学建模竞赛第四届-【妈妈杯】A题:“2048”游戏的数学基础及其取胜策略研究(附赛题解析及MATLAB代码)
  16. 计算机英语刘艺课文bc翻译,《计算机英语》原文译文和习题答案 刘艺
  17. 融媒发展背景下学龄前儿童交通安全主题绘本创作启示
  18. 途乐行入口页面html代码,途乐行旅游网站
  19. Week10——二阶魔方
  20. 山石网科防火墙基础上网配置_WebUI(最新版)

热门文章

  1. php删除excel文件,PHPExcel:HTML到Excel,写入删除excel文件中的CSS
  2. 并查集——家谱(洛谷 P2814)
  3. linux 只有命令指示,Linux命令行翻页?
  4. 【连载】如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(4)
  5. 2021 Gartner云数据库魔力象限,阿里云、华为云成国内唯二
  6. Oracle 20c 新特性:持久化内存数据库 - Persistent Memory Database
  7. 一文带你搞懂从动态代理实现到Spring AOP
  8. 你掉进过“伪敏捷”的陷阱吗?
  9. 技术解读丨GaussDB数仓高可用容灾利器之逻辑备份
  10. 14岁AI天才的钢铁之心