Android 性能增强失败
我有一个ANR(应用程序没有响应)问题。我试图使用AsyncTask将任务分成线程,但是它似乎比以前更糟糕 我做错了什么,但我不知道问题出在哪里 正如您所看到的,主线程需要6百万毫秒,我认为这并不好 为了提高性能,我在不同活动的Android 性能增强失败,android,multithreading,performance,android-asynctask,Android,Multithreading,Performance,Android Asynctask,我有一个ANR(应用程序没有响应)问题。我试图使用AsyncTask将任务分成线程,但是它似乎比以前更糟糕 我做错了什么,但我不知道问题出在哪里 正如您所看到的,主线程需要6百万毫秒,我认为这并不好 为了提高性能,我在不同活动的onCreate()方法中做了这些事情: AsyncTask.execute(new Runnable() { @Override public void run() { //TODO your backg
onCreate()
方法中做了这些事情:
AsyncTask.execute(new Runnable() {
@Override
public void run() {
//TODO your background code
if(sPreferenceManager.getBoolean(Constants.SharedPreferences.UPDATE_REQUIRED))
{
log(Log.DEBUG,"mediaplayeractivity","UPDATE_REQUIRED");
mViewModel.getmInteractor().updateDatabaseAfterLogin();
}
}
});
AsyncTask.execute(new Runnable() {
@Override
public void run() {
//TODO your background code
initServices(savedInstanceState);
}
});
AsyncTask.execute(new Runnable() {
@Override
public void run() {
Fabric.with(GomusApplication.this, new Crashlytics());
//TODO your background code
AndroidThreeTen.init(GomusApplication.this);
initPreferences();
sInstance = GomusApplication.this;
initRealm();
appComponent = DaggerAppComponent.builder()
.appModule(new
AppModule(GomusApplication.this)).build();
appComponent.inject(GomusApplication.this);
}
});
我将任务分为异步任务。然而,它使性能更差
更新:
我已经像这样改变了我的任务,但我仍然没有看到任何奇怪的增强:
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
if(sPreferenceManager.getBoolean(Constants.SharedPreferences.UPDATE_REQUIRED))
{
log(Log.DEBUG,"mediaplayeractivity","UPDATE_REQUIRED");
mViewModel.getmInteractor().updateDatabaseAfterLogin();
}
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);
newasynctask(){
@凌驾
受保护的空位背景(空位…空位){
if(sPreferenceManager.getBoolean(Constants.SharedPreferences.UPDATE_必填))
{
日志(log.DEBUG,“mediaplayeractivity”,“需要更新”);
mViewModel.getmInteractor().updateDatabaseAfterLogin();
}
返回null;
}
}.executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR,null);
我还对约束布局进行了一些布局更改,比如缺少一些字段,并添加了它们。我删除了一些大图像以提高性能
然而,我所做的却让表现更糟。运行主线程需要300万毫秒,但现在需要600万毫秒
很抱歉,到目前为止,我从未尝试过提高绩效,因此我没有足够的知识。但我做了一些研究,人们说使用异步任务
任何帮助都将不胜感激
谢谢 这是使用
AsyncTask
的正确方法吗?你不应该把你的代码放在AsyncTask对象的doInBackground()
内部吗?另外,当你执行AsyncTask对象时,一定要传入AsyncTask.THREAD\u POOL\u EXECUTOR以确保它在与主线程并行的不同线程上执行。我不确定它是否正确。我看到一些帖子,人们建议用这种方式。我添加了THREAD_POOL_EXECUTOR标志,但仍然不确定在AsyncTask对象中的何处添加doInBackground()。但是,请注意,您不需要为它创建单独的类,您可以在运行时匿名执行一个类;)及