0

私は最近、「Atom Reader で読むのが難しい」という質問からやりました。今、Android Froyo から Jellybean まで、私が作成したブログ アプリの最大の互換性について考えています。問題は、 StrictModeを使用してチェック中にエラーが通知されたことです。Windows 7 OS経由で 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 マニフェストを介して最小 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);
    }
}

このxp.Get_Parse_Feed(URL_link, is, lm.headlines, lm.links);コードを元に戻してonCreate()でメイン スレッドとして実行すると、リンクがすぐに適切に読み込まれることがあります。問題は、どれを管理すればよいか、このブログ アプリを 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 に答える