6

私はずっと前から、カレンダーのイベントが変更されたときにイベントをリッスンするアプリケーションを持っています。これをマニフェストに追加しました:

<receiver android:name="your.package.name.CatchChangesReceiver"
    android:priority="1000" >
    <intent-filter>
        <action android:name="android.intent.action.PROVIDER_CHANGED" />
        <data android:scheme="content" />
        <data android:host="com.android.calendar" />
    </intent-filter>
</receiver>

次に、ブロードキャスト レシーバーを拡張する単純なクラスを作成します。

public class CatchChangesReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // add processing here with some query to content provider
        // in my project I use this selection for getting events:
        final String SELECTION = CalendarContract.Events.CALENDAR_ID + "="
        + calendarId + " AND " + "("
        + CalendarContract.Events.DIRTY + "=" + 1 + " OR "
        + CalendarContract.Events.DELETED + "=" + 1 + ")" + " AND "
        + CalendarContract.Events.DTEND + " > "
        + Calendar.getInstance().getTimeInMillis();
    }
}

アプリケーションは何年も前から存在するため、これは常に私にとってはうまくいきました。以前は Samsung デバイスを使用していましたが、カレンダーは S Planner というアプリケーションでした。今、Asus Zenfone Max を持っています。Google カレンダーがインストールされています。しかし今、このリスナーは正しく動作しません。リスナーが起動するまで新しいイベントを追加するため、大幅な遅延が発生します。カレンダーイベントを作成するとき、カレンダーアプリを何度か閉じて開かないとリスナーが起動しないと思います。問題は、リスナーがある時点で起動されることですが、本来あるべきタイミングではなく、代わりに、カレンダー イベントを作成してからリスナーが呼び出されるまでに大きな遅延が発生することです。なぜこのような遅延が発生するのでしょうか。

4

0 に答える 0