Android:如何检查服务器是否可用

Android:如何检查服务器是否可用,第1张

1、判断应用已经启动

ActivityManager

am

=

(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE)

List<</span>RunningTaskInfo>

list

=

am.getRunningTasks(100)

for

(RunningTaskInfo

info

:

list)

{

if

(info.topActivity.getPackageName().equals(MY_PKG_NAME)

&&

info.baseActivity.getPackageName().equals(MY_PKG_NAME))

{

isAppRunning

=

true

//find

it,

break

break

}

}

100表示取的最大的任务数,info.topActivity表示当前正在运行的Activity,info.baseActivity表系统后台有此

进程在运行,具体要做如何判断就看自已的业务需求。这个类还有更多的方法可以取得系统运行的服务、内存使用情况等的方法,请各位自行查找。

有一点要注意,如果想正常运行此方法,请在你的

AndroidManifest.xml

中加入:

android:name="android.permission.GET_TASKS"

/>

否则可能会有exception抛出。

2、判断服务已经启动运行

 ANR是Application Not Responding的缩写,即应用程序无响应。简单来说,就是应用的界面突然卡住了,无法响应用户的操作如触摸事件等。

 解决ANR问题,首先要做的是找到问题,线下我们可以通过ADB命令导出ANR文件进行分析,线上我们可以使用FileObserver或ANR-WatchDog保存ANR堆栈信息,然后上传到服务器。

2.1导出ANR文件

 ANR发生之后我们可以使用以下命令导出ANR文件:

或者

 使用方法:

ANR-WatchDog

 Git地址: ANR-WatchDog

 ANR-WatchDog是一个非侵入式的ANR监控组件。

使用步骤:

ANR发生之后可直接在日志中查看堆栈信息:

 也可以在Application中监听ANR-WatchDog返回的错误日志。

原理

 ANRWatchDog继承子Thread,所以它最重要的就是run方法。核心内容可以分为以下几点:

 ANR异常我们可分为线上监测和线下监测两个方向

使用Socket类中的Poll方法,就可以。Socket client //假如已经创建好了,连接到服务器端得Socket的客户端对象。我们只要client.Poll(10,SelectMode.SelectRead)判断就行了。只要返回True是。就可以认为客户端已经断开了。Poll 方法将会检查 Socket 的状态。指定 selectMode 参数的 SelectMode..::.SelectRead,可确定 Socket 是否为可读。指定 SelectMode..::.SelectWrite,可确定 Socket 是否为可写。使用 SelectMode..::.SelectError 检测错误条件。Poll 将在指定的时段(以 microseconds 为单位)内阻止执行。如果希望无限期的等待响应,则将 microSeconds 设置为一个负整数。如果要检查多个套接字的状态,则不妨使用 Select 方法。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/474177.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-07
下一篇2023-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存