5

私はこのアプリケーションを上記のタブレットにインストールしており、このタブレットを1日か2日クライアントに提供するつもりです。私が欲しいのは、次のとおりです。

操作を確認した後、クライアントは有効期限が切れた後、上記のアプリケーションを使用できなくなるはずです。このために、私はカレンダー関数を呼び出し、抽出されたシステム日付(日)をアプリケーションに操作を終了させたい日と比較しています。私は次のコードを使用しています:

  public void expire(){
    Calendar c = Calendar.getInstance();

    int sDate = c.get(Calendar.YEAR);
    int sMonth = c.get(Calendar.MONTH)+1;
    int sDay = c.get(Calendar.DAY_OF_MONTH); 
    int sHour =  c.get(Calendar.HOUR_OF_DAY);
    int sMin = c.get(Calendar.MINUTE);

    Toast.makeText(getApplicationContext(), ""+sDate+sMonth+sDay+"Hour is"+sHour, Toast.LENGTH_LONG).show();

    if (sDay >=11){
        System.exit(0);
    }

}

私はexpire();を呼び出します。ボタンをクリックして確認しますが、数秒間空白の黒い画面が表示されるだけで、アプリケーションは正常に動作します。欲しくない。

4

3 に答える 3

3

アクティビティを終了するには、を呼び出しますfinish()

于 2012-12-11T11:31:58.700 に答える
2

finish()代わりに電話をかけSystem.exit(0);、月も確認してください。クライアントは来月の最初の10日間もアプリケーションを使用します:P:P:P

于 2012-12-11T11:36:49.090 に答える
1

私がexpire()を呼び出した後、finish()の使用はエミュレーターで機能しているように見えました。onCreateからではなくonボタンをクリックします。ただし、実際のデバイスでSystem.exit(0)を使用すると効果がありましたが、finish()では効果がありませんでした。

System.exit()(純粋なJavaおよびコアJavaの場合)を使用して、プログラムが終了する前にシャットダウンフックを実行できます。これは、プログラムのすべての部分が相互に認識できない(そして認識すべきではない)大きなプログラムでシャットダウンを処理するための便利な方法です。次に、誰かが終了したい場合は、System.exit()を呼び出すだけで、シャットダウンフック(適切に設定されている場合)が、ファイルのクローズやリソースの解放など、必要なすべてのシャットダウンセレモニーを実行します。

一方、finish()の場合と同様に、finish()を呼び出したメソッドは最後まで実行されます。制御をAndroidに戻すまで、finish()操作は開始されません。

于 2012-12-11T12:31:53.710 に答える