使Atom / RSS阅读器的速度和可靠性

时间:2013-02-23 09:22:55

标签: java android asynchronous reliability android-strictmode

我最近从“Difficulty Reading with 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并且您将看到错误以红线显示,则会发生以下情况:

enter image description here

如果我通过Android Manifest将最低SDK版本设置为11,那么会发生什么:

enter image description here

此外,当我使用 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及更高版本兼容?

1 个答案:

答案 0 :(得分:0)

  

如果我将最低SDK版本设置为7并且你将会发生什么,那么会发生什么   看到红线上的错误:

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

要保持7的最低SDK版本,请将StrictMode代码包装在if条件中,这样只有在Gingerbread及更高版本上运行应用时才能使其可用:

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

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

  

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

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