求教.关于android 反射机制原理反射出现的一个纠结有关问题

求教 Android 关于模拟按键的有关问题_读书人
求教 Android 关于模拟按键的有关问题
&来源:读书人网&【读书人网():综合教育门户网站】
求教 Android 关于模拟按键的问题请教大家一个很最近很纠结的问题:我在Service里面用Instrumentation中的
求教 Android 关于模拟按键的问题请教大家一个很最近很纠结的问题:我在Service里面用Instrumentation中的发送按键函数实现了按键的模拟,但是遇到一个问题:发送HOME键以后,再发送其他的按键会报错。是不是因为Instr只能针对一个Activity进行测试?我的目标是想实现与具体Activity无关的按键模拟,起初用Service来做的原因就是原以为可以在不同的Activity中切换并注入按键。可是总是报错...!! 无奈来请教大家,有什么办法解决这个问题吗? 如果需要用Iwindowmanager的话,应该如何编译通过? 坐等答案..[解决办法]探讨请教大家一个很最近很纠结的问题:我在Service里面用Instrumentation中的发送按键函数实现了按键的模拟,但是遇到一个问题:发送HOME键以后,再发送其他的按键会报错。是不是因为Instr只能针对一个Activity进行测试?我的目标是想实现与具体Activity无关的按键模拟,起初用Service来做的原因就是原以为可以在不同的Activity中切换并注入按键。可是总是报错...!……[解决办法]Instrumentation只能给被测试的那个activity发按键 给其他发会报错 权限不够& Iwindowmanager在源码环境下编译就能过[解决办法]Activity不一样,你的keyevent收到的就不样,你必须指定将keyevent发送到那个activity中。[解决办法]IWindowManager和Activity无关,你可以编译成一个shell命令向全系统发送事件,当然,前提是root的shell[解决办法]一般的key都是发给当前运行的apk,但是home例外,因为系统会相应它。系统相应会回到主界面,导致所有的程序开始进入pause状态。所以当你再按别的键,就没活动的窗口去接受了。[解决办法]你看一下 phonewindowsmanager.java吧我记得Home和power的按键响应是在这里面实现的你自己改一下响应函数就应该ok了[解决办法]探讨引用:IWindowManager和Activity无关,你可以编译成一个shell命令向全系统发送事件,当然,前提是root的shell请问具体如何操作?关于android应用退出的问题 - 阿福 - ITeye技术网站
博客分类:
看到很多关于应用退出的问题,今天在这里为大家简单总结一下,如果说的不对还望大家见谅。
方法一:System.exit(0) 和android.os.Process.killProcess(android.os.Process.myPid()),我想很多人都尝试过,当关 闭多个Activity的时候这两个方法根本不起作用,原因当然和Activity的堆栈管理有关。
方法二:restartPackage,这种方法会终止一切和这个程序包关联的,所有共享同一uid的process被kill,所有
的activity会被removed所有创建的服务会停止,还会发一个广播
。众所周知这个方法已经过时,2.2就不起作用了。
ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
manager.restartPackage(getPackageName());
&uses-permission android:name="android.permission.RESTART_PACKAGES"/&
方法三:这个方法是2.2以后取代restartPackage的方法。但是google给的只是一个空壳,这个方法依然不起作用。
activityManager.killBackgroundProcesses(packageName);
&uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/&
方法四:创建一个ActivityInstance单例模式来统一管理Activity的退出。这是一个很鸡肋的方法,因为它确实有用,但又这么写又有点浪费。
具体做法就是写一个ActivityInstance单例,在每一个activity启动的时候都调用它的ActivityInstance.addActivity(this);方法,当退出应用时,调用ActivityInstance.exit();方法。
public void exit(){
for(Activity at:activityList){
at.finish();
System.exit(0);
方法五:发送广播退出。在需要结束应用时,发送一个特定的广播,每个Activity收到广播后关闭。如果不闲麻烦可以这样做,个人来讲还没有方法四好。 方法六:递归退出,在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。 方法七:退出的时候跳转回HOME,一种假的退出方法,但可以退出,该方法只是回到HOME页而将本身应用虚假退出。
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);
方法八: activityManager.forceStopPackage(PackageName);看到forceStop是不是感觉还挺熟悉的,我们系统设置里面关闭应用就是调用的这个方法。这个方法可以完全关闭应用程序而且只要一个包名。 不过这个方法是系统隐藏的,我们写应用的时候在ActivityManager里是找不到这个方法的。这就涉及到了调用系统隐藏API的方法。下面是通过反射机制来获取该方法。
ActivityManager sd = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
Method method= Class.forName("android.app.ActivityManager")
.getMethod("forceStopPackage", String.class);
补充:其实Android有自己的内存管理机制并不需要我们完全退出本身应用,当用户按退出键的时候用户回到HOME或其他相关界面即可。在没有特殊要求的时候虚假退出就可以。
yangguangfu
浏览: 1295260 次
来自: 北京
aclululu 写道最后一个表示不解,既然已经New Jia ...
aclululu 写道最后一个表示不解,既然已经New Jia ...
写的不错,是男人的话,瞬间就能理解了。
最后一个表示不解,既然已经New JiaShi出来了,为毛在装 ...15:57 提问
关于Android 5.0里使用datepicker的问题
如题,最近使用datepicker去做一个日期选择的需求,需要三种显示:1、显示年月日,2、显示年月,3、显示年。这个需求通过反射去取相应的字段,然后隐藏是可以做到的,但是同样的方式在android5.0以下的设备上可以达到效果,在android5.0以上的设备上就不能用了,去源码里面看了下,字段并没有发生变化,打印log看了下,反射只进了最外层,不知道怎么往里面去走!有没有遇到过类似问题的大神,求告知,已经困扰好几天了
按赞数排序
你看看log有没有提示权限不足的问题,可能是5.0在权限上做了限制。
其他相似问题求教Android蓝牙串口开发OutputStream发送数据失败的问题。各位前辈,我刚接触蓝牙串口这块开发,&在做数据发送的时候。一直报
java.io.IOException:&[JSR82]&write:&write()&failed。的错误,弄半天不知道问题出在哪。
相应的权限我也加了。
&&&&&uses-permission&android:name="android.permission.BLUETOOTH"&/&
&&&&&uses-permission&android:name="android.permission.BLUETOOTH_ADMIN"&/&
求指点一二,不胜感激。--参考方法--os.flush();试试
随机推荐程序问答结果
如对文章有任何疑问请提交到,或者您对内容不满意,请您反馈给我们发贴求解。
,机器学习分类整理更新日期:: 19:16:05
如需转载,请注明文章出处和来源网址:
本文WWW.DOC100.NET DOC100.NET版权所有。扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
求教android大神,项目名称上出现了一个红色的感叹号是什么意思?
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
如果没猜错,你这个项目不是自己新建的.如果真是这样,你在项目处点击右键properties,点击android,从里面选择一个sdk的版本.保持后应该就好了
从网上下的源码,源码版本是8,我自己建的也是8啊。
为您推荐:
其他类似问题
扫描下载二维码}

我要回帖

更多关于 android 反射获取对象 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信