0

我最近从“ Atom Reader 阅读困难”的问题中做了。现在,我正在考虑我制作的博客应用程序的最大兼容性,从 Android Froyo 到 Jellybean。问题是我在使用StrictMode检查时收到错误通知。我正在通过Windows 7操作系统运行 Eclipse IDE。

    //-----[ UI Thread Debug Setup ]-----
    if(DEVELOPER_MODE)
    {
        /*
         * 
         *             Manage main thread control for Android 3.0 and later. Not work on Android 2.3.3 and below, otherwise, you will get an error 
         *          for changing minimum SDK version at manifest. If you want to publish this project as an Android app (APK)  that  will  run  on 
         *          Android 3.0 or later, set DEVELOPER_MODE to "true", otherwise, will not work. (App for Boy Kuripot [Ver. 1])
         * 
         */

        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectAll().penaltyLog().build());
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
    }

如果我将最低 SDK 版本设置为 7 会发生以下情况,您会看到错误出现在红线中:

在此处输入图像描述

如果我通过 Android Manifest 将最低 SDK 版本设置为 11,会发生以下情况:

在此处输入图像描述

此外,当我使用AsyncTask运行它时,它会变得更慢、更快或只是滞后。

//TODO _________________________[ Activity Starter Subclass ]_________________________
private class Post_Task extends AsyncTask<String, Integer, String> // --> This class will be revised and to be used for next version. (Compatible now with Android 2.1 and later.)
{
    @Override
    protected void onPreExecute()
    {
        super.onPreExecute();
    }

    @Override
    protected String doInBackground(String... params) 
    {
        //-----[ RSS Feed Setup ]-----
        xp.Get_Parse_Feed(URL_link, is, lm.headlines, lm.links);

        return "All done!";
    }

    @Override
    protected void onProgressUpdate(Integer... values)
    {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String result)
    {
        super.onPostExecute(result);
    }
}

当我在onCreate()作为主线程恢复并运行此xp.Get_Parse_Feed(URL_link, is, lm.headlines, lm.links);代码时,有时我们很快就会正确加载链接。问题是我应该管理哪一个以及如何使这个博客应用程序与 Android 2.1 及更高版本兼容?

4

1 回答 1

0

如果我将最低 SDK 版本设置为 7 会发生以下情况,您会看到错误出现在红线中:

发生这种情况是因为StrictMode在 Gingerbread(API 级别 10)中引入,并且您的 SDK 最低版本为 7。在这种情况下Lint,如果您在运行应用程序时会注意到您遇到问题(应用程序将崩溃)的错误姜饼下面的平台。当您将最低版本设置为 11 时,不会发生StrictMode该 API 级别及更高级别可用的错误。

要保持最低 SDK 版本 7,请将StrictMode代码包装在一个if条件中,以便仅在 Gingerbread 及更高版本上运行应用程序时使其可用:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
    // Strict mode available            
}

或者您告诉Lint在使用更高 API 级别的类时将其设为警告而不是错误。由于您可能会StrictMode在分发应用程序时忘记删除引用,因此请使用第一个选项。

此外,当我使用 AsyncTask 运行它时,它会变得更慢、更快或只是滞后。

什么变得越来越慢或越来越快?如果您需要帮助,您应该更好地解释使用任务时发生了什么,在onCreate方法中移动行时发生了什么,任何异常等。

于 2013-02-23T09:40:25.363 回答