0

これは、アラームを設定するための私のコードです。

public void SetAlarm(Context context, int tag, long time){
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
     Intent i = new Intent(context, Alarm.class);
     i.putExtra("position", tag);
     PendingIntent pi = PendingIntent.getBroadcast(context, tag, i, PendingIntent.FLAG_CANCEL_CURRENT);
     am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ time, pi); // Millisec * Second * Minute
}

これは私のonRecieveメソッドです:

public void onReceive(final Context context, Intent intent){   
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "my wak up lo");
    wl.acquire();

    position = intent.getIntExtra("position", -1);         
    new PostManager(context, position);

    wl.release();
}

これはエミュレーターでうまく機能しています。同時に、エミュレーターと実際のデバイスで24時間後にトリガーされるアラームを設定しました。作業はエミュレータによってうまく行われますが、実際のデバイスでは行われません。これは何か他のことのために起こっているのPowerManager.FULL_WAKE_LOCKですか?私は一生懸命努力しましたが、解決策を見つけることができませんでした。

4

1 に答える 1

0

申し訳ありませんが、問題はにありましたPostManager。でPostManager、別の文字列でセッションCookieをチェックしていました。では、どうなりますか?これが答えです。4時間前に、セッションCookieはcookiemanagerに残るため、によるチェックは正常に.equal(another_string)機能します。しかし、4時間後にセッションCookieが期限切れになり.equal(another_string)、NullPointerExceptionがスローされると思います。だから私は私が持っているクッキーがnullであるかどうかをチェックしました。これは私の問題を解決します。もう一度ごめんなさい。

于 2013-03-05T11:17:59.173 に答える