0

アクティビティグループのアラームダイアログ付きのアラームマネージャを実装しようとしています。アプリケーションの内外からアラームダイアログを一時停止することで、スケジュールされたアクティビティに正常に入ることができます。アクティビティの代わりにアクティビティグループがスケジュールされている場合、アラームダイアログの一時停止時にアクティビティグループに入ることができませんでした(アプリケーション内ではアラームダイアログの一時停止時にアクティビティグループに入ることができますが、アプリの外部ではできません。 )。

サンプルコードは次のとおりです。

public  static  ActivityGroup   group;

public  static  void    switchPendingActivity(Class<?> destClass)
{
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(group, destClass);
View view = group.getLocalActivityManager().startActivity(destClass.getSimpleName(),intent).getDecorView();
group.setContentView(view);
}

getLocalActivityManager().startActivity()インテントのフラグがインテントのbyである場合FLAG_ACTIVITY_NEW_TASK、アクティビティグループを開始しましたsetFlags。上記のコードを実行した後でも、アクティビティグループは前面に表示されませんでした。(コードのデバッグ中に、アクティビティグループがフォアグラウンドに到達していないことを確認しましたが、onCreate()で呼び出されるアクティビティグループのアクティビティのテーブルの描画などの内部関数の一部が実行されます。)

したがって、アラームダイアログの一時停止時にアクティビティグループ内のアクティビティをスケジュールするために適切に機能するために、上記のコードに更新が必要かどうかはわかりません。上記の問題の解決にご協力ください。


私の問題はアラームを一時停止していません。アラームマネージャスケジューラを介してアクティビティグループに参加したい。アラームマネージャのスケジュールが期限切れになった後、アクティビティグループがフォアグラウンドになるはずですが、発生することはありません(ただし、アクティビティグループのアクティビティのonCreateの関数が実行されます)。上記のシナリオは、アプリから出た場合にのみ発生します。アプリの内外を問わず、アラームダイアログが表示されます。アラームダイアログの[OK]ボタンをクリックすると、アクティビティグループのアクティビティに入る必要がありますが、発生しません。上記のシナリオを解決する方法。

4

1 に答える 1

0
public class AndroidAlarmService extends Activity {



private PendingIntent pendingIntent;





/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    Button buttonStart = (Button)findViewById(R.id.startalarm);

    Button buttonCancel = (Button)findViewById(R.id.cancelalarm);



    buttonStart.setOnClickListener(new Button.OnClickListener(){



 @Override

 public void onClick(View arg0) {

  // TODO Auto-generated method stub



  Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class);

  pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0);



           AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);



           Calendar calendar = Calendar.getInstance();

           calendar.setTimeInMillis(System.currentTimeMillis());

           calendar.add(Calendar.SECOND, 10);

           alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);



  Toast.makeText(AndroidAlarmService.this, "Start Alarm", Toast.LENGTH_LONG).show();

 }});



    buttonCancel.setOnClickListener(new Button.OnClickListener(){



 @Override

 public void onClick(View arg0) {

  // TODO Auto-generated method stub

  AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

  alarmManager.cancel(pendingIntent);



           // Tell the user about what we did.

           Toast.makeText(AndroidAlarmService.this, "Cancel!", Toast.LENGTH_LONG).show();





 }});



}

}
于 2012-11-27T07:08:17.197 に答える