2011-10-27 30 views
0

スケジュールされたアクティビティを1時間ごとに実行しようとしていますが、すべてバックグラウンドで動作しています。起動時に予定されたアクティビティを開始する推奨される方法はありますか?

今私は、デバイスが起動されるときにピックアップするBroadcastReceiverを持っています。 BroadcastReceiverはスケジュールされたアクティビティをオフにするのに必要なすべての必要なメソッドを作成するアクティビティ(Called AlarmController)へのPendingIntentを作成します。

これまでのところ、これはうまくいかないようです。 これは、これは実際に打ち上げで私のアプリがクラッシュしたことを除いて、動作しますが、

Intent intent = new Intent(serviceactivirt.this, AlarmController.class); 
    PendingIntent sender = PendingIntent.getActivity(serviceactivirt.this, 0, intent, 0); 
    try { 
     sender.send(); 
    } catch (CanceledException e) { 
     Toast.makeText(getApplicationContext(), "FEJLSAN", Toast.LENGTH_LONG).show(); 
    } 

私BroadcastRecieverクラスonReceiveは{} のように見え、は(のみテスト用)私のメインの活動のonCreate {}にindenticalある方法です予定された活動は働いています... アイデア?これは「それを行う方法」ですか、それとももっとお勧めの方法ですか? 乾杯!

策:代わりに活動を呼び出すBroadcastRecieverを持つの

、私はサービスを開始BroadcastRecieverを作りました。そして私のアクティビティをプログラム的に、そして目立つようにサービスに変えました。 素晴らしい作品です!

+0

なぜアクティビティがクラッシュするのですか? – slayton

答えて

0

スケジュールされたアクティビティを1時間ごとに実行しようとすると、すべてバックグラウンドで動作します。

フォアグラウンドを引き継ぐアクティビティによって中断されるのではなく、Notificationなどの他のオプションをユーザーが設定できるようにしてください。

今のところ私は、デバイスが起動したときにピックアップするBroadcastReceiverを持っています。

毎時イベントに対してAlarmManagerスケジュールを設定する必要があります。 AlarmManagerPendingIntentは、getActivity()で入手できるものです。

これまでのところ、これはうまくいかないようです。

アクティビティを開始する場合は、startActivity()に電話してください。 PendingIntentを作成せずにすぐにsend()PendingIntentを作成しないでください。

また、getApplicationContext()を取り除き、単にthisを使用してください。打ち上げ

で私のアプリがクラッシュ

使用adb logcat、DDMS、またはEclipseでのDDMSの視点LogCatを調べて、あなたのクラッシュに関連したスタックトレースを見てことを除いて

関連する問題