0

私はアラーム アプリケーションを実行しており、特定の時間にアクティビティを開始するメソッドを使用しています。また、アプリケーションに enable\disable というオプションがあり、アラームでアクティビティを開始したくありません (これにより、無効にするボックスをチェックすると、サウンドと選択した画像が表示されます。そのため、アクティビティを開始する前に閉じる方法を探しています。アクティビティが開始して終了していることを示すために画面に何も表示しないでください。特定の時間に特定のアクティビティを開くためにこのメソッドを使用しています

     Intent myIntent = new Intent(SharedPrefs.this,MainPhoto.class);
     pendingIntent = PendingIntent.getActivity(MainPhoto.this, 0, myIntent, 0);
     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
     Calendar calendar = Calendar.getInstance();
     calendar.setTimeInMillis(System.currentTimeMillis()+10000);
     alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

これで何か助けはありますか?

4

3 に答える 3

1

アラームをキャンセルするか、アクティビティを開く必要があるかどうかを確認するアクティビティの代わりに開かれるサービスを使用するのはどうですか?

于 2012-12-08T22:44:25.520 に答える
0

チェックボックスを共有設定として使用することをお勧めします。その後、新しいアクティビティへのインテントを起動する前に、それが無効になっているかどうかを確認してください...ただし、新しいアクティビティを開始したい場合は、チェックボックスがチェックされている場合は、finish(); を呼び出します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Checkbox.checked())
        finish();
}

お役に立てれば :)

于 2012-12-08T22:50:08.660 に答える
0

ここでは、アラームをキャンセルすることがおそらく最善の解決策です。

アクティビティが既に呼び出されるまでわからないというまれなケースがいくつかあるかもしれません。このような場合は、事前に電話finish()してくださいsetContentView

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (/* Check here if valid */) {
            finish();
        } else {
            setContentView(R.layout.some_layout);
            /* Actually do your initialization. */
        }
    }
于 2012-12-08T22:53:42.603 に答える