起動時にスケジュールされたアクティビティを開始する推奨方法

私はスケジュールされた活動を毎時間行ったり、バックグラウンドで働いたりしています。

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

どのくらいまで、これは動作しないようです。 これは、私のBroadcastRecieverクラスonReceive {}がのように見えて、私の主なアクティビティonCreate {}(テストのみ)

    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がアクティビティを呼び出す代わりに、BroadcastRecieverがサービスを開始しました。そして私のアクティビティをプログラム的に、そして目立つようにサービスに変えました。 よく働く!

0
なぜ活動がクラッシュするのですか?
追加された 著者 slayton,

1 答え

スケジュールされた活動を毎時間行ったり、バックグラウンドで作業したりしています。

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

今は、デバイスが起動したときにピックアップするBroadcastReceiverがあります。

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

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

アクティビティを開始する場合は、 startActivity()を呼び出します。 PendingIntent を作成せずにすぐに PendingIntentsend()しないでください。

また、 getApplicationContext()を取り除き、単に this を使用します。

起動時にアプリがクラッシュする以外は

Eclipseの adb logcat 、DDMS、またはDDMSパースペクティブを使用してLogCatを調べ、クラッシュに関連するスタックトレースを確認します。

0
追加された