activity

Android Activity 调用startActivityForResult之后被销毁?

青春壹個敷衍的年華 提交于 2019-12-22 17:43:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Android Activity 调用startActivityForResult之后调用的Activity被销毁的问题 最近在华为的手机上面发现Activity调用 startActivityForResult后返回结果时,调用的Activity都会被重新创建,也就是Activity被销毁了。 在网上经过一番查找,发现有哥们说在手机开发人员选项里面有这么一项“不保留活动”被勾上了, 一看还真是。 把那个勾去掉一切又恢复正常了。 来源: oschina 链接: https://my.oschina.net/u/72663/blog/322772

Testing和Instrumentation

筅森魡賤 提交于 2019-12-22 05:37:43
Testing和Instrumentation Android提供了一系列强大的测试工具,它针对Android的环境,扩展了业内标准的JUnit测试框架。尽管你可以使用JUnit测试Android工程,但Android工具允许你为应用程序的各个方面进行更为复杂的测试,包括单元层面及框架层面。 Android测试环境的主要特征有: 可以访问Android系统对象。 Instrumentation框架可以控制和测试应用程序。 Android系统常用对象的模拟版本。 运行单个test或test suite的工具,带或不带Instrumentation。 支持以Eclipse的ADT插件和命令行方式管理Test和Test工程。 这篇文章是对Android测试环境和测试方法的简要介绍,并假设你已经拥有一定的Android应用程序编程及JUnit测试的经验。 概要 Android测试环境的核心是一个Instrumentation框架,在这个框架下,你的测试应用程序可以精确控制应用程序。使用Instrumentation,你可以在主程序启动之前,创建模拟的系统对象,如Context;控制应用程序的多个生命周期;发送UI事件给应用程序;在执行期间检查程序状态。Instrumentation框架通过将主程序和测试程序运行在同一个进程来实现这些功能。 通过在测试工程的manifest文件中添加

Testing和Instrumentation

≡放荡痞女 提交于 2019-12-22 00:04:20
Android 提供了一系列强大的测试工具,它针对 Android 的环境,扩展了业内标准的 JUnit 测试框架。尽管你可以使用 JUnit 测试 Android 工程,但 Android 工具允许你为应用程序的各个方面进行更为复杂的测试,包括单元层面及框架层面。 Android 测试环境的主要特征有: l 可以访问 Android 系统对象。 l Instrumentation 框架可以控制和测试应用程序。 l Android 系统常用对象的模拟版本。 l 运行单个 test 或 test suite 的工具,带或不带 Instrumentation 。 l 支持以 Eclipse 的 ADT 插件和命令行方式管理 Test 和 Test 工程。 这篇文章是对 Android 测试环境和测试方法的简要介绍,并假设你已经拥有一定的 Android 应用程序编程及 JUnit 测试的经验。 概要 Android 测试环境的核心是一个 Instrumentation 框架,在这个框架下,你的测试应用程序可以精确控制应用程序。使用 Instrumentation ,你可以在主程序启动之前,创建模拟的系统对象,如 Context ;控制应用程序的多个生命周期;发送 UI 事件给应用程序;在执行期间检查程序状态。 Instrumentation 框架

Service 启动Activity

微笑、不失礼 提交于 2019-12-21 14:21:07
1, 在BroadcastReceiver中启动Activity的问题 * * 如果在BroadcastReceiver的onReceive()方法中如下启动一个Activity * Intent intent=new Intent(context,AnotherActivity.class); * context.startActivity(intent); * 可捕获异常信息: * android.util.AndroidRuntimeException: * Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. * Is this really what you want? * 它说明:在Activity的context(上下文环境)之外调用startActivity()方法时 * 需要给Intent设置一个flag:FLAG_ACTIVITY_NEW_TASK * * 所以在BroadcastReceiver的onReceive()方法中启动Activity应写为: * Intent intent=new Intent(context,AnotherActivity.class); * intent.setFlags

安卓学习之Activity的跳转

余生颓废 提交于 2019-12-21 11:16:47
安卓学习之Activity的跳转 文章目录 安卓学习之Activity的跳转 显示意图 隐式意图 显示意图 显示意图非常明显看下面的代码 //第一个参数是上下文信息,第二个参数是跳转的字节码 Intent intent = new Intent ( getApplicationContext ( ) , ActivityDemo . class ) ; startActivity ( intent ) ; 显示意图跳转很快,不过只能显示自己的界面 隐式意图 隐式意图没有明确指出组件信息,需要靠IntentFilter过滤, intentFilter中可以包含action category data等。 通过IntentFilter过滤,只有有一个被视为通过,那么就会 被认为过滤通过。 代码如下: Intent intent = new Intent ( ) ; intent . setAction ( "aaa.bbb.ccc" ) ; intent . addCategory ( "android.intent.category.DEFAULT" ) ; startActivity ( intent ) ; 来源: CSDN 作者: 西理杨同学 链接: https://blog.csdn.net/qq_43702629/article/details/103641124

android 系统解耦思想-设置与framework

…衆ロ難τιáo~ 提交于 2019-12-21 05:43:49
可以理解android系统本身就是一个大的apk,而launcher,设置等apk就是这个大的apk中的某个模块的功能,各个功能模块各司其职,实现各自的功能 那系统这个大的apk来如何解耦了,原生android系统功能最多的apk就是设置,设置基本上涵盖了所有常用的功能模块,以下以8.0设置中的休眠功能为例来说明,入口是在设置中设置休眠时间,然后具体逻辑功能实现是在framework中 packages\apps\Settings\src\com\android\settings\display\TimeoutPreferenceController.java @Override public boolean onPreferenceChange(Preference preference, Object newValue) { try { int value = Integer.parseInt((String) newValue); Settings.System.putInt(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, value); updateTimeoutPreferenceDescription((TimeoutListPreference) preference, value); } catch

Android Fragment 深度解析

倾然丶 夕夏残阳落幕 提交于 2019-12-20 11:38:24
有过一些面试经验的人基本都深有体会,每次面试一般都会问到Fragment的知识,所以,今天我就单独把Fragment拿出来与大家分享一下. 会涉及到Fragment如何产生,什么是Fragment,Fragment生命周期,如何静态和动态使用Fragment,Fragment回退栈,Fragment事务,以及Fragment的一些特殊用途,例如:没有布局的Fragment有何用处?Fragment如何与Activiy交互?Fragment如何创建对话框?Fragment如何与ActionBar集成等等... 1、Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套app,然后拷贝一份,修改布局以适应什么超级大屏的。难道无法做到一个app可以同时适应手机和平板吗?答案是,当然有,那就是Fragment.Fragment出现的初衷就是为了解决这样的问题。 你可以把Fragment当成Activity一个界面的一部分,甚至Activity的界面由完全不同的Fragment组成,更帅气的是Fragment有自己的声明周期和接收、处理用户的事件,这样就不必要在一个Activity里面写一堆事件、控件的代码了。更为重要的是,你可以动态的添加、替换、移除某个Fragment。 2

Android中Context

不羁岁月 提交于 2019-12-20 02:02:03
近期学习Android,看到文章对Context的讲解比较少,所以上网查了下,还可以。 Context字面意思上下文,位于framework package的android.content.Context中,其实该类为LONG型,类似Win32中的Handle句柄,很多方法需要通过 Context才能识别调用者的实例,比如说Toast的第一个参数就是Context,一般在Activity中我们直接用this代替,代表调用者的 实例为Activity,而到了一个button的onClick(View view)等方法时,我们用this时就会报错,所以我们可能使用ActivityName.this来解决,主要原因是因为实现Context的类主要有Android特有的几个模型,Activity、Service以及BroadcastReceiver。 Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型。同时启动应用级的操作,如启动Activity,broadcasting和接收intents。 两种类型的Context 在android中context可以作很多操作,但是最主要的功能是加载和访问资源。在android中有两种context,一种是 application context

Running activity from remote service

╄→гoц情女王★ 提交于 2019-12-20 01:38:34
问题 iam trying to run an activity from diffrent package from my remote service: this is how i implement the service.java public class CurrencyService extends Service { public class CurrencyServiceImpl extends ICurrencyService.Stub { int CALL_PUSH_SERVICE_ACTIVITY=10; @Override public void callSomeActivity(int activityId) throws RemoteException { Intent pushActivity=new Intent("com.pushservice.PushActivity"); pushActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(pushActivity); } ....

Android进程管理机制研究

放肆的年华 提交于 2019-12-19 01:45:42
一、Linux中的进程管理 在Linux中,进程是指处理器上执行的一个实例,可使用任意资源以便完成它的任务,具体的进程管理,是通过“进程描述符”来完成的,对应Linux内核中的task_struct数据结构。进程描述符,包括进程标识、进程的属性、构建进程的资源。 一个进程可以通过fork()或者vfork()调用创建出子进程,这些子进程可以访问父进程的地址空间,包括文本段、数据段、堆栈段。 通常情况下,调用fork()的进程处于task_running状态,则fork出来的子进程默认也处于task_running状态,具体来说,在fork之后、exec之前,子进程处于task_running状态中的就绪状态。 进程的运行状态包括以下几种。 1、task_running:可执行状态。包含正在CPU上执行的、可执行但是尚未被调度执行这两种子状态,后者对应就绪状态。 2、task_interruptible:可中断的睡眠状态。因为等待某事件的发生而被挂起。当等待的事件发生时,处于该状态的进程将被唤醒。 3、task_uninterruptible:不可中断的睡眠状态。处于睡眠状态,但是此刻进程是不可中断的。此时进程不响应异步信号,不能通过发送信号的方式kill之,但可以响应硬件中断,例如磁盘IO,网络IO等。 4、task_stopped / task_traced:暂停状态或跟踪状态