Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 性能增强失败_Android_Multithreading_Performance_Android Asynctask - Fatal编程技术网

Android 性能增强失败

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

我有一个ANR(应用程序没有响应)问题。我试图使用AsyncTask将任务分成线程,但是它似乎比以前更糟糕

我做错了什么,但我不知道问题出在哪里

正如您所看到的,主线程需要6百万毫秒,我认为这并不好

为了提高性能,我在不同活动的
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()。但是,请注意,您不需要为它创建单独的类,您可以在运行时匿名执行一个类;)及