Crittercism 无法使用单独的进程处理 android 服务
Crittercism not working on android service with separate process
我有一个应用程序在单独的进程中启动 android 服务。也就是说,两个进程是 运行。一个是我的主要应用程序,另一个是服务。
现在我尝试通过以下方法集成 crittercism(它是一个移动应用程序性能管理工具),但它无法为服务生成崩溃日志。
仅在应用程序中集成批评。
结果 : 它只为应用程序生成崩溃日志,不为服务生成。
在 onCreate()
方法中将 crittercism 集成到服务中。
结果:它没有显示崩溃日志,也没有在实时统计信息中显示应用程序负载。
在应用程序和服务中集成批评。
结果 : 它只为应用程序而不为服务生成崩溃日志。
那么如何获取 android 服务的崩溃日志?
这是我实现的代码:
MainApplication.java
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Crittercism.initialize(getApplicationContext(), "CRITTERCISM_APP_ID");
}
MyService.java
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Crittercism.initialize(getApplicationContext(), "CRITTERCISM_APP_ID"); // Same app id which is used for MainApplication.java
}
build.gradle服务和主应用程序的文件:
dependencies {
compile 'com.crittercism:crittercism-android-agent:5.0.6'
}
还在下面添加了服务和主应用程序的权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
我收到了 Crittercism 社区的回复,下面是他们的回复:
The crashes cannot be captured in a remote service and because its Android issue. We also do not count app loads in remote services but other data is collected: HE, Network, etc. Crittercism counts actual app loads only.
One possible work around is to manually wrap all of the top level methods in the service in a try/catch block. In the catch block, use Crittercism.logHandledException.
Here's an example:
try {
customersTopLevelMethod();
} catch (Throwable t) {
Crittercism.logHandledException(t);
// You probably want to rethrow the exception since the service will now
// be in an invalid state.
throw t;
}
我有一个应用程序在单独的进程中启动 android 服务。也就是说,两个进程是 运行。一个是我的主要应用程序,另一个是服务。
现在我尝试通过以下方法集成 crittercism(它是一个移动应用程序性能管理工具),但它无法为服务生成崩溃日志。
仅在应用程序中集成批评。
结果 : 它只为应用程序生成崩溃日志,不为服务生成。
在
onCreate()
方法中将 crittercism 集成到服务中。结果:它没有显示崩溃日志,也没有在实时统计信息中显示应用程序负载。
在应用程序和服务中集成批评。
结果 : 它只为应用程序而不为服务生成崩溃日志。
那么如何获取 android 服务的崩溃日志?
这是我实现的代码:
MainApplication.java
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Crittercism.initialize(getApplicationContext(), "CRITTERCISM_APP_ID");
}
MyService.java
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Crittercism.initialize(getApplicationContext(), "CRITTERCISM_APP_ID"); // Same app id which is used for MainApplication.java
}
build.gradle服务和主应用程序的文件:
dependencies {
compile 'com.crittercism:crittercism-android-agent:5.0.6'
}
还在下面添加了服务和主应用程序的权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
我收到了 Crittercism 社区的回复,下面是他们的回复:
The crashes cannot be captured in a remote service and because its Android issue. We also do not count app loads in remote services but other data is collected: HE, Network, etc. Crittercism counts actual app loads only.
One possible work around is to manually wrap all of the top level methods in the service in a try/catch block. In the catch block, use Crittercism.logHandledException.
Here's an example:
try {
customersTopLevelMethod();
} catch (Throwable t) {
Crittercism.logHandledException(t);
// You probably want to rethrow the exception since the service will now
// be in an invalid state.
throw t;
}