1

私が行ったライブラリの onPostExecute で X 秒ごとに URL に接続するアプリがあります。アプリを閉じるか、[戻る] ボタンで戻るとonPause()、メイン アクティビティ クラスのメソッドをオーバーライドして停止する必要があります。新しい開発者向けのクラスの作成を容易にするために、独自のライブラリでこれを制御したいのですが、ライブラリonPause()メソッドでオーバーライドすると、接続が継続されます。私のライブラリでこれらを行う方法はありますか?

メインクラスの私のコードは次のとおりです。

@Override
public void onPause() {
    super.onPause();
    myLib.stopResource();
    myLib.flagRefresh = false;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_BACK) {
        myLib.stopResource();
        myLib.flagRefresh = false;
        super.onBackPressed();
        return true;
     }
     return super.onKeyDown(keyCode, event);    
}
4

2 に答える 2

3

onStop()の代わりに使用する必要がありますonPause()。これは、アクティビティが画面に表示されていないが実行中の場合、つまり画面が真っ暗になった場合に呼び出されます。上書きする代わりに、メソッドonKeyDown()を使用するonBackPressed()ことをお勧めしますが、現在のコードをonPause()内部onStop()に配置する場合は、上書きする必要はありません。

于 2012-03-20T10:28:23.513 に答える
0

私が見る唯一の方法は、ライブラリをサポートするActivityから新しいクラスを派生させることです。しかし、このアプローチは順列爆発に遭遇します。スペシャリストの標準アクティビティには、MyLibバリアントも必要です。(ListActivity、FragmentActivityなど)

class MyLibActivity extends Activity {
    @Override
    public void onPause() ..

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)..

}

したがって、純粋なアクティビティのサポートを提供するのがおそらく最善です。

于 2012-03-20T10:33:42.717 に答える