AsyncTask在调试时杀死istelf,没有任何错误消息

时间:2019-04-04 18:52:38

标签: java android android-asynctask

我在使用AsyncTask时遇到一个非常奇怪的问题,该问题用于在我的android应用程序中下载一个zip文件。直到我决定对链接到此任务的每个字符串都使用strings.xml资源之前,它一直运行得非常完美。

当我单击应用程序内的下载按钮时,AsyncTask的进度条显示一秒钟或更短的时间,然后关闭自身,任务进入onPostExecute()状态。

我尝试在测试设备上调试应用程序,但该任务没有错误。我什至添加了一些带有Log.d标签的存根,其中包括了logcat结果:

275-15524/xmc.androidexpert35.com.xtrememusicchecker D/ANDRO_ASYNC: path set
2019-04-04 20:19:22.484 15275-15524/xmc.androidexpert35.com.xtrememusicchecker D/ANDRO_ASYNC: Try block
2019-04-04 20:19:22.487 15275-15524/xmc.androidexpert35.com.xtrememusicchecker D/ANDRO_ASYNC: file url got
2019-04-04 20:19:22.490 15275-15524/xmc.androidexpert35.com.xtrememusicchecker D/ANDRO_ASYNC: opening connection
2019-04-04 20:19:22.515 495-528/? D/SurfaceFlinger: duplicate layer name: changing xmc.androidexpert35.com.xtrememusicchecker/xmc.androidexpert35.com.xtrememusicchecker.SettingsActivity to xmc.androidexpert35.com.xtrememusicchecker/xmc.androidexpert35.com.xtrememusicchecker.SettingsActivity#1
2019-04-04 20:19:22.585 495-794/? D/SurfaceFlinger: duplicate layer name: changing Surface(name=cafcbf6 xmc.androidexpert35.com.xtrememusicchecker/xmc.androidexpert35.com.xtrememusicchecker.SettingsActivity)/@0x3604cd - animation-leash to Surface(name=cafcbf6 xmc.androidexpert35.com.xtrememusicchecker/xmc.androidexpert35.com.xtrememusicchecker.SettingsActivity)/@0x3604cd - animation-leash#1
2019-04-04 20:19:22.614 15275-15275/xmc.androidexpert35.com.xtrememusicchecker I/ViewRootImpl: CPU Rendering VSync enable = true
2019-04-04 20:19:22.672 495-528/? W/SurfaceFlinger: Attempting to set client state on removed layer: xmc.androidexpert35.com.xtrememusicchecker/xmc.androidexpert35.com.xtrememusicchecker.SettingsActivity#1
2019-04-04 20:19:22.672 495-528/? W/SurfaceFlinger: Attempting to destroy on removed layer: xmc.androidexpert35.com.xtrememusicchecker/xmc.androidexpert35.com.xtrememusicchecker.SettingsActivity#1
2019-04-04 20:19:24.758 15275-15314/xmc.androidexpert35.com.xtrememusicchecker D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=3635, firebase_screen_class(_sc)=SettingsActivity, firebase_screen_id(_si)=-6495914915605520780}]
2019-04-04 20:19:26.125 829-3715/? W/NotificationService: Toast already killed. pkg=xmc.androidexpert35.com.xtrememusicchecker callback=android.app.ITransientNotification$Stub$Proxy@3b51651

这是我的AsyncTask代码,是否有人可以帮助我找到问题?或建议找到有用的调试解决方案?

谢谢,非常感谢您的帮助!

public class DownloadFile extends AsyncTask<String, String, String> {

    private static String file_url;
    private Context context;
    private ProgressDialog dialog;
    private String dialogString;
    private File path;
    private String xmpath;
    private boolean canceled = false;

    public DownloadFile(Context cxt) {
        context = cxt;
        dialog = new ProgressDialog(context);
    }
    @Override
    protected void onPreExecute() {
        dialog.setMessage(context.getString(R.string.xm_downloading));
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setCancelable(false);
        dialog.setButton(DialogInterface.BUTTON_NEGATIVE, context.getString(R.string.xm_cancel), new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                path.delete();
                canceled = true;
                dialog.dismiss();

            }
        });
        dialog.show();
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... aurl) {
        int count;
        if (SettingsActivity.isMagisk){
            file_url = "http://androidexpert35developer.altervista.org/Xtrememusic-versions/XTREMEMusic_MAGISK_OFICIAL_By_androidexpert35.zip";
            path= new File(Environment.getExternalStorageDirectory() + "/XTREMEMusic_Download/XTREMEMusic_Magisk.zip");
        }else{
            file_url = "http://androidexpert35developer.altervista.org/Xtrememusic-versions/XTREMEMusic_OFFICIAL_By_androidexpert35.zip";
            path = new File(Environment.getExternalStorageDirectory() + "/XTREMEMusic_Download/XTREMEMusic.zip");
            Log.d("ANDRO_ASYNC","path set");
        }
        try {
            Log.d("ANDRO_ASYNC","Try block");
                URL url = new URL(file_url);
            Log.d("ANDRO_ASYNC","file url got");
                URLConnection conexion = url.openConnection();
            Log.d("ANDRO_ASYNC","opening connection");
                conexion.connect();
            Log.d("ANDRO_ASYNC","Connected");
                int lenghtOfFile = conexion.getContentLength();
                InputStream is = url.openStream();
                File testDirectory = new File(Environment.getExternalStorageDirectory() + "/XTREMEMusic_Download");
            Log.d("ANDRO_ASYNC","making directory");
                if (!testDirectory.exists()) {
                    testDirectory.mkdir();
                }
                FileOutputStream fos;
            Log.d("ANDRO_ASYNC","Stream");
                if(SettingsActivity.isMagisk) {
                     fos = new FileOutputStream(testDirectory + "/" + ("XTREMEMusic_Magisk") + ".zip");
                    Log.d("ANDRO_ASYNC","Downloading");
                }else{
                     fos = new FileOutputStream(testDirectory + "/" + ("XTREMEMusic") + ".zip");
                    Log.d("ANDRO_ASYNC","Downloading");
                }
                byte data[] = new byte[1024];
                long total = 0;
                int progress = 0;
                while ((count = is.read(data)) != -1) {
                    total += count;
                    int progress_temp = (int) total * 100 / lenghtOfFile;
                    publishProgress(""+ progress_temp);
                    if (progress_temp % 10 == 0 && progress != progress_temp) {
                        progress = progress_temp;
                    }
                    fos.write(data, 0, count);
                }
                is.close();
                fos.close();
        } catch (Exception e) {}
        return null;

    }
    protected void onProgressUpdate(String... progress) {
        Log.d("ANDRO_ASYNC",progress[0]);
        dialog.setProgress(Integer.parseInt(progress[0]));
    }

    @Override
    protected void onPostExecute(String unused) {
        dialog.dismiss();
        if(SettingsActivity.isInstall) {
            installer();
        }else if (canceled) {
            Toast.makeText(context, R.string.xm_cancelled, Toast.LENGTH_LONG).show();
        } else{
            xmpath = path.toString();
            Toast.makeText(context, context.getString(R.string.xm_downloaded, xmpath), Toast.LENGTH_LONG).show();
        }
    }

0 个答案:

没有答案