luckysheet关闭异步获取sheet数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luckysheet关闭异步获取sheet数据相关的知识,希望对你有一定的参考价值。

LuckySheet是一个强大的在线表格编辑器,它可以实现数据与表格的快速编辑和视图。它可以通过异步获取sheet数据来让用户快速轻松地完成表格编辑。但是,用户可以关闭此功能,以减少使用的内存和网络资源。关闭异步获取sheet数据的步骤是:首先,登录LuckySheet,然后打开要编辑的文件;然后,在工具栏上点击“设置”图标;最后,在左侧菜单中找到“表格设置”,取消“启用异步sheet数据”这一选项,即可关闭异步获取sheet数据。 参考技术A 是指在使用Luckysheet时,禁止从其他数据源异步获取sheet数据的功能。在使用Luckysheet时,可以配置其设置,将异步获取sheet数据的功能禁止,以防止从其他数据源获取数据时发生错误或延迟。关闭异步获取sheet数据的功能,也能够帮助用户减少获取数据的延迟,提升工作效率。此外,关闭异步获取sheet数据的功能,也能够有效防止未经授权的数据访问,以维护用户信息安全。

Android -- 关闭AsyncTask(异步任务)

  前面说了如何操作AsyncTask,这篇我们来说一下如何关闭AsyncTask。

  有人就问了:为什么要关闭AsyncTask呢?很简单,AsyncTask 是在后台执行耗时操作(获取数据),当你离开当前页面或者结束进程时,也就是跳到你另一个页面不需要当前页面的数据。如果不关闭,其它页面无法显示数据,因为后台还在获取当前页面的数据,也可理解为堵塞。

  现在我们再运行一下上一篇博客里的app:

 

我们点击Back后再次进入App,点击产看数据

  我们会发现,再次点击时,数据没有立刻加载,而是过了一会才加载。有人会讲是网络问题,但我们是模拟的数据加载,没有经过网络。

  这就是上面所讲的堵塞。AsyncTask在执行多个线程时,是单个执行,其它线程是在缓冲区。当执行一个下一个才开始(One by one)

  那么怎么关闭呢?

  通过api,我们会发现一个 AsyncTask.cancel(true); 

  A task can be cancelled at any time by invoking cancel(boolean). Invoking this method will cause subsequent calls to isCancelled() to return true. After invoking this method, onCancelled(Object), instead of onPostExecute(Object) will be invoked after doInBackground(Object[]) returns. To ensure that a task is cancelled as quickly as possible, you should always check the return value of isCancelled() periodically from doInBackground(Object[]), if possible (inside a loop for instance.)

  意思是: 

  • 我们可以随时调用 cancel(boolean)去取消这个加载任务,调用这个方法会间接调用 iscancelled 并且返回true 。
  • 调用cancel()后,在doInBackground()return后 我们将会调用onCancelled(Object) 不在调用onPostExecute(Object)
  • 为了保证任务更快取消掉,你应该在doInBackground()周期性的检查iscancelled 去进行判断。

  现在我们就在MainActivity中的onPause(退出时)写入代码

 @Override
    protected void onPause() {
        //如果异步任务不为空 并且状态是 运行时  ,就把他取消这个加载任务
        if(task !=null && task.getStatus() == AsyncTask.Status.RUNNING){
            task.cancel(true);

        }
        super.onPause();
    }

再在AsyncTask 中加上 红色 代码,判断

public class MyTask extends AsyncTask{
    private List<User> userlist;
    private BaseAdapter adapter;
    private MainActivity activity;
    private String barNum;
    public MyTask(MainActivity activity) {
        this.activity = activity;        
    }
    
    @Override
    protected Object doInBackground(Object... params) {
        userlist = (List<User>) params[0];
        adapter = (BaseAdapter) params[1];
        for(int i=1 ;i<=100;i++){
            if(isCancelled()){
                break;
            }
            try {
                Thread.sleep(300);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            userlist.add(new User("zhangsan"+i,18+i,"aa"+i+"aa"));
            publishProgress(i);
            barNum = i+"%";
        }        
        return userlist;
    }
    @Override
    protected void onProgressUpdate(Object... values) {
        if(isCancelled()){
            return;
        }
        Button btn = (Button) activity.findViewById(R.id.button1);
        btn.setVisibility(View.GONE);
        TextView num = (TextView) activity.findViewById(R.id.barNum);
        int bar = Integer.parseInt(values[0].toString());
        /*bar = (bar)*25;*/
        ProgressBar progressBar = (ProgressBar) activity.findViewById(R.id.seekBar1);
        progressBar.setProgress(bar);
        num.setText(barNum);
        //progressBar.setBackgroundColor(activity.getResources().getColor(R.color.orange));
        /*progressBar.setBackgroundResource(R.color.orange);*/
        adapter.notifyDataSetChanged();
    }
    
}

  这时,当我Back后再点进来加载,立马就开始了。有人会觉得疑惑:我在退出前不是cancel 了吗?为什么还要在异步任务中进行分步判断。

  当在onPause中 cancel 掉,取消了这个异步加载,但是在AsyncTask 中的isCanceled 值是一直没变,默认false , 即不关闭。

  

谢谢大家的关注。 I am big!It\'s the picture that got small.    ---- 我是巨大的!是那些照片让我变得渺小了。(《日落大道》)   

 

以上是关于luckysheet关闭异步获取sheet数据的主要内容,如果未能解决你的问题,请参考以下文章

luckysheet数据回写函数不触发

在线EXCEL编辑器-Luckysheet

Android -- 关闭AsyncTask(异步任务)

SwiftUI:.sheet() 在关闭当前工作表时不会使用预期数据转到上一个视图

连接没有通过 Python3 异步并发 HTTP 获取请求关闭

iOS 16 修改第三方库实现监听 SwiftUI 中 sheet 弹出视图的下滑关闭动作