Android adb.exe程序启动详细处理步骤如下:
1、打开Android adb.exe程序,输入: netstat -aon|findstr "5037" 回车;
2、5037 这是adb要的端口,有时候会被其他进程(程序)占用了(一般是会连接手机的软件)所以要查询是谁占用了,然后就可以Kill(停止)它
3、根据上图然后输入 taskkill /pid 1156 /f (1156就是占用此端口的进程id);正常情况下,就可以使用adb了,如果还是没有成功的,可以看看是不是adb.exe被电脑防火墙屏蔽了。
扩展资料:
1、Android adb.exe程序处理方法详细讲解:
cmd命令进入sdk/platform-tools文件下,adb kill-server;
启动adb服务,adb start-server;
如果启动失败,可能是某个进程占用了adb的5037端口,查找占用端口号5037的连接netstat -ano findstr "5037" ;
2、手动结束此进程,重启adb服务 adb start-server;
adb kill-server --停止adb服务;
adb start-server --开启adb服务;
参考资料来源:百度百科-Android系统级深入开发:移植与调试
在android中如果一个应用程序被按Home键回到桌面了,这个时候应用程序就处于后台运行状态,后台运行状态的应用在系统内存不足的情况下有可能会被系统回收掉。我们可以用Android DDMS模拟一下把进程kill掉。然后重新进入应用的重启情况。
这个是app从启动-退出后台-系统kill-重启的一个流程
项目中我们往往要用到关闭程序时销毁所有的activity,而且这也是面试经常遇到的问题,退出程序的方式也有好几种,一下是一些处理关闭程序的方法:1.最简单的方式就是使用系统的方法exit(0),这是最简单粗暴的方式,强制程序退出,但是这种方法针对部分机型有可能不太好使,退出时有可能出现程序崩溃的d出框,或者程序会重新启动,这对用户体验来说不是很好。
2.抛出异常强制退出,这种方法的使用对用户体验来说简直就是灾难,所以就不要用这种方式了。
3.使用广播的方式通知activity进行关闭,这种方式也有人在用,大家可以自行百度下,我主要介绍下面这种方式。
4.使用application,在application中创建activity集合,创建添加以及删除activity的方法,并且在BaseActivity中的生命周期中调用这些方法,在使用的时候调用BaseApplication的方法,这也是目前最常用的方法,但是这种在BaseActivity中添加activity的方法也有一个问题,那就是当你要使用第三方的BaseActivity的时候,一个还好你可以继承,那如果要使用两个第三方的BaseActivity呢, Java 本身是单继承的,所以就会导致activity关闭不全了。那么这个问题的解决就要依靠一接口: ActivityLifecycleCallbacks ;这是Application中声明的一个接口,其内容如下:
@Override
public voidonActivityCreated(Activity activity,Bundle bundle) {
Log.e("onActivityCreated---","is running"+"--"+activity.getLocalClassName())
}
@Override
public voidonActivityStarted(Activity activity) {
Log.e("onActivityStarted---","is running"+"--"+activity.getClass().getCanonicalName())}
@Override
public voidonActivityResumed(Activity activity) {Log.e("onActivityResumed---","is running"+"--"+activity.getClass().getCanonicalName())}
@Override
public voidonActivityPaused(Activity activity) {Log.e("onActivityPaused---","is running"+"--"+activity.getClass().getCanonicalName())}
@Override
public voidonActivityStopped(Activity activity) {Log.e("onActivityStopped---","is running"+"--"+activity.getClass().getCanonicalName() )}
@Override
public voidonActivitySaveInstanceState(Activity activity,Bundle bundle) {Log.e("onActivitySaveInstanceState---","is running"+"--"+activity.getPackageName())}
@Override
public voidonActivityDestroyed(Activity activity) {Log.e("onActivityDestroyed---","is running"+"--"+activity.getPackageName())}
大家可以看到这些方法名采用的都是英语中的过去式命名,其意大家看方法名也应该懂了,就是activity执行过得生命周期都会在这里调用,想要这些方法执行要调用
registerActivityLifecycleCallbacks(this)
这个方法,记得一定要调用啊,还有请记住这些回调是针对所有的Activity哦,所以我们就可以使用这样的方式去对activity进行关闭或者其他 *** 作了。下面有一种存放activity的方式,喜欢的可以使用:
private staticWeakReferencecurAct
private staticWeakHashMapacList=newWeakHashMap<>()
/***设置当前activity**
@paramact*/
public static voidsetCurActivity(Activity act) {curAct=newWeakReference<>(act)acList.put(act, null)}
/***获取想要的activity*@return*/
public staticActivitygetCurActivity() {if(acList==null||acList.isEmpty())return nullWeakReference wr =curActif(wr !=null) {returnwr.get()}return null}
/***清理activity*@paramact*/
public static voidclearCurActivity(Activity act) {Object remove =acList.remove(act)if(remove !=null&&TextUtils.equals(remove.getClass().getSimpleName(),curAct.get().getClass().getSimpleName())) {//TODO You want to do something.}}/***销毁所有的activity*/public static voiddestroyAllActivity() {if(null!=acList&&!acList.isEmpty()) {Object[] keys =acList.keySet().toArray()for(Object obj : keys) {Activity act = (Activity)objif(act !=null) {act.finish()}}}}
/***关闭某个activity*@paramactivity*/
public static voidcloseActivity(String activity) {if(null!=acList&&!acList.isEmpty()) {Object[] keys =acList.keySet().toArray()for(Object obj : keys) {if(obj !=null&&activity !=null&&TextUtils.equals(obj.getClass().getSimpleName(),activity)) {Activity act = (Activity)objact.finish()}}}}
下面是CSDN地址: 原文链接
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)