我最近从“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并且您将看到错误以红线显示,则会发生以下情况:
如果我通过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及更高版本兼容?
答案 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
方法中移动线条时发生的事情,任何异常等。