当前位置: 首页 > 知识库问答 >
问题:

为什么是下面的代码出了问题,我的应用程序一直崩溃

盖昀
2023-03-14

这是我的代码,这是独立的java类MainActivity。这个代码有什么问题。

package com.leftclick.faithful;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.AsyncTask;
import java.io.IOException;
import org.jsoup.nodes.Document;
import org.jsoup.Jsoup;
import org.jsoup.Connection;

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UpDateManger updatemanger = new UpDateManger(this);
        updatemanger.execute();
    }

    //Update Manager
    private class UpDateManger extends AsyncTask<Void, Void, Void> {
        
        String latestversionurl = "https://raw.githubusercontent.com/Vaibhavraj23/FaithFul/main/latestVersion";
        String version = "0.1.0";
        public String result;
        public AppCompatActivity activity;

        public UpDateManger(AppCompatActivity a)
        {
            this.activity = a;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... voids) {
            try {
                //Connect to the website
                Connection connection = Jsoup.connect(latestversionurl);
                connection.timeout(5000);
                connection.maxBodySize(0);
                connection.userAgent("Mozilla/5.0");

                Document document = connection.get();
                this.result = document.toString();

                if(version!=this.result){
                    this.activity.setContentView(R.layout.updatetolatestversion);
                    
                }else{}

            } catch (IOException e) {}
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
        }
    }
        
    
}

这是我的代码,这是独立的java类MainActivity。这个代码有什么问题。我认为UpDateManager构造函数或this.activity变量或jsoup模块本身存在一些问题,请帮助我。

共有1个答案

苏德容
2023-03-14

我认为问题出在doInBackground()方法内部,您正在从后台线程更新视图,这是不可接受的。如果您想从后台线程更新视图,请尝试使用下面的代码。

      private class UpDateManger extends AsyncTask<Void, Void, String> {

    String latestversionurl = "https://raw.githubusercontent.com/Vaibhavraj23/FaithFul/main/latestVersion";
    String version = "0.1.0";
    public String result;
    public AppCompatActivity activity;

    public UpDateManger(AppCompatActivity a) {
        this.activity = a;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(Void... voids) {
        try {
            //Connect to the website
            Connection connection = Jsoup.connect(latestversionurl);
            connection.timeout(5000);
            connection.maxBodySize(0);
            connection.userAgent("Mozilla/5.0");

            Document document = connection.get();
            this.result = document.toString();

        } catch (IOException e) {}
        return this.result;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(aVoid);
        if(version!=result){
            this.activity.setContentView(R.layout.updatetolatestversion);

        }else{}
    }
   }
 类似资料:
  • 我有一个可搜索的术语数组,我想使用Lucene基本上CTRL-F通过这个文档堆栈,找到并存储所有这些术语在该文档堆栈中的位置。例如: 术语:“A”、“B”、“C” null 差不多吧。我怎么能这么做?到目前为止,我只是使用一个StandardAnalyzer,如下所示: Lucene最初会生成很多文档,但后来删除了除。cfs文件以外的所有文档。我如何保留其他文件来执行我的查询?

  • 对不起,我是android应用程序的新手。创造。我已经提到了几乎所有的解决方案,但这就是不工作...我没有看到任何问题,在下面的简单代码。我的应用程序很简单,加载启动屏幕,然后加载WebView。下面的问题是什么? [评论]请。看下面,我已经声明了。怎么了? java:这将加载WebView。 } activity_main.xml:

  • 问题内容: 我的应用程序在Linux上作为后台进程运行。当前在“终端”窗口的命令行中启动。 最近,一个用户执行该应用程序一段时间后,它神秘地死了。文本: 被杀 在航站楼上。这发生了两次。我问其他终端是否有人使用kill命令杀死进程?没有。 Linux在什么情况下会决定终止我的进程?我相信外壳程序显示为“ killed”,因为该进程在收到kill(9)信号后就死了。如果Linux发送了kill信号,

  • 我多次尝试让developers.android(https://developer.android.com/training/basics/firstapp/index.html)上的MyFirstApp教程中的应用程序发挥作用。我正在Nexus4设备上测试我的代码,该设备装有Android 4.4.2 AndroidManifest.xml: MainActivity.java Display

  • 问题内容: 这段代码什么也没给我返回,您能帮我为什么不收回价值吗? 问题答案: 你是那个意思吗 还是真的是t1.wid = t2.wid?在这种情况下,您需要左联接。 编辑 好的,所以您已修复它。除非t2中有行的wid与t1中具有相同wid的行匹配的wid,否则不会显示任何结果。 如果需要结果,请将其更改为: 下一步编辑 如果目标是使用t2中尚未存在的t1中的值更新t2,则可能是这样的: 缺少的步

  • 我在计算机课上遇到了合并排序的问题。我不断收到错误或返回原始ArrayList。 我相信合并排序涉及到将数组(列表)递归地对半拆分,直到只剩下一个元素,然后从这些单独的元素开始,按排序顺序合并它们。直到数组(列表)被排序为止。至于实际的排序部分,我试图在新的ArrayList中插入两半之间的较高值,直到它们都为空,在这种情况下,填充的ArrayList现在被排序。 这是我当前的代码: 我将感谢任何