Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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_Performance_Sqlite - Fatal编程技术网

Android 数据库多连接的性能分析

Android 数据库多连接的性能分析,android,performance,sqlite,Android,Performance,Sqlite,这将是一个关于性能的问题。首先,我的英语很抱歉,但我们走吧,我有一个应用程序,是一家餐厅的菜单 它工作得很好,但我想提高,我希望它足够快,不要那么慢 例如: 在第一篇文章中,我得到了“跳过了xx帧!应用程序可能在其主线程上做了太多的工作”,因此我认为最好的解决方案是不要在一个线程或运行中放置这么多大的图像并连接到数据库 以下是我的代码片段: @Override public void onViewCreated(View view, Bundle savedInstanceState) {

这将是一个关于性能的问题。首先,我的英语很抱歉,但我们走吧,我有一个应用程序,是一家餐厅的菜单

它工作得很好,但我想提高,我希望它足够快,不要那么慢

例如:

在第一篇文章中,我得到了“跳过了xx帧!应用程序可能在其主线程上做了太多的工作”,因此我认为最好的解决方案是不要在一个线程或运行中放置这么多大的图像并连接到数据库

以下是我的代码片段:

 @Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    controller  = new MDAlacarte(getActivity());
    int idCategoria    = Integer.parseInt(getArguments().getString("idCategoria"));
    int idSubcategoria = Integer.parseInt(getArguments().getString("idSubcategorias"));

    buscarPratos(idCategoria,idSubcategoria);

}

private void buscarPratos(final int idCategoria, final int idSubcategoria ) {

    getActivity().runOnUiThread(new Runnable(){
        public void run() {
            //If there are stories, add them to the table

            pratosLista = controller.getPratosPorCategoriaAlacarte(idCategoria,idSubcategoria);
            int tamanho = pratosLista.size();

            for (int i = 0; i < tamanho ; i++) {


                pratoObj = new Prato( pratosLista.get(i).get("nome"),
                        pratosLista.get(i).get("descricao"),
                        pratosLista.get(i).get("codigo"),
                        pratosLista.get(i).get("categoria"),
                        pratosLista.get(i).get("preco"),
                        pratosLista.get(i).get("tipo"),
                        pratosLista.get(i).get("subcategoria"));


                pratos.add(pratoObj);
                nomePratos.add(pratosLista.get(i).get("nome"));

            }

        }
    });
}
@覆盖
已创建视图上的公共void(视图,捆绑保存状态){
控制器=新的MDACarte(getActivity());
int idCategoria=Integer.parseInt(getArguments().getString(“idCategoria”);
int idSubcategoria=Integer.parseInt(getArguments().getString(“idSubcategorias”);
buscarPratos(idCategoria,idSubcategoria);
}
私有void-buscarPratos(最终整数idCategoria,最终整数idSubcategoria){
getActivity().runOnUiThread(新的Runnable()){
公开募捐{
//如果有故事,请将它们添加到表中
pratosLista=controller.getPratosProjectorIaaLaCarte(idCategoria,idSubcategoria);
int tamanho=pratosista.size();
对于(int i=0;i
但问题是,有时我添加了太多标签,比如巴西的“饮料”分类中的“Bebidas”,执行起来太慢,就像8个标签一样,每个示例中,我的每个片段都会为每个标签执行此代码

这是最佳实践?这是一个listview,我制作了ViewHolder模式以获得良好的性能


我缺少什么?

要从UI线程中获得工作,您可能需要使用
异步任务:

您只需将
getActivity().runOnUiThread(新的Runnable(){…};
替换为

private void buscarPratos(final int idCategoria, final int idSubcategoria) {
    new AsyncTask<Void, Void, Void>() {
        @ Override
        public void doInBackground() {
            // If there are stories, add them to the table

            pratosLista = controller.getPratosPorCategoriaAlacarte(idCategoria,idSubcategoria);
            int tamanho = pratosLista.size();

            for (int i = 0; i < tamanho; i++) {
                nome = pratosLista.get(i).get("nome")
                pratoObj = new Prato(nome,
                        pratosLista.get(i).get("descricao"),
                        pratosLista.get(i).get("codigo"),
                        pratosLista.get(i).get("categoria"),
                        pratosLista.get(i).get("preco"),
                        pratosLista.get(i).get("tipo"),
                        pratosLista.get(i).get("subcategoria"));

                pratos.add(pratoObj);
                nomePratos.add(nome);
            }
        }
    }).execute();
}
private void buscarPratos(final int idCategoria,final int idSubcategoria){
新建异步任务(){
@凌驾
公共无效doInBackground(){
//如果有故事,请将它们添加到表中
pratosLista=controller.getPratosProjectorIaaLaCarte(idCategoria,idSubcategoria);
int tamanho=pratosista.size();
对于(int i=0;i
你不需要
runOnUiThread
那里…哼,为什么要玩板球?因为那部分代码已经在创建视图后的UI线程上了
什么是最好的性能?Asyntask可以快速运行?是的,它可以,但这并不意味着你做的任何事情都需要它使用Asynctask与internet连接,但不需要对于SQLITE操作。谢谢,但现在我面临另一个问题,我的Asynctask函数在我的片段中创建视图的适配器之前执行:我以前如何执行它?好的,多一些代码会很有用。请您重申一下您的问题好吗?