0

ここで答えを見つけるのに数日を費やしましたが、何もありませんでした。

public class myReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
    }
}

アクティビティ:

public class TestActivity extends Activity {
private myReceiver rec;
    @Override
protected void onCreate(Bundle savedInstanceState) {
        ...
        rec = new myReceiver(); // do I really need this?
        AlarmManager am=(AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, myReceiver.class);
        PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
        am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 5 , pi);
    }
}

xml

<application ...>
...
<receiver android:name="com.myprj.myReceiver" android:enabled="true"></receiver>
</application>

常に機能するとは限りませんが、「必要な」場合:(

注!: 私は Eclipse で Ctrl+F11 を押し始め、戻るボタンでアプリを閉じ、もう一度 Ctrl-F11 を押しました! SO、7回目の繰り返しで、アプリケーションが機能しました(onReceiveでトースト)。私はそれを止め、データを削除し、Ctrl-F11をもう一度押し始めました。

4

1 に答える 1

0

試すことができるいくつかの変更 (すべてが必要というわけではありません)

  1. myReceiver を MyReceiver に変更します (:-) これは Java 命名規則です)

  2. 削除する

    rec = new myReceiver();

  3. 現在時刻の代わりに将来の時刻をミリ秒単位で与える

    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 * 5, 1000 * 5 , pi);

  4. onReceive() にデバッグ メッセージを入れる

    Log.d("MyReceiver", "onReceive");

于 2013-04-01T05:53:49.227 に答える