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 方法。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)