嗨,謝謝你的幫助。PendingIntents:爲什麼只有2件作品中的一件?
請我試着在一週內使用AlarmManager來啓動和停止活動。
現在我面臨這個我不明白的問題。
對於一週的每一天,我創建2個PendingIntents:
- 一個用於啓動活動
- 一個殺死活性
你可以看到下面的代碼。
現在的問題是:
- 只有第二的PendingIntent打完
(並開始活動,thereticaally,應立即停止,但由於第一的PendingIntent從未熄滅第二的PendingIntent啓動該活動而不是關閉它)。
- 顯然第一個PendingIntent永遠不會關閉!
/INTENT THAT SHOULD START THE ACTIVITY
Intent sthu = new Intent(ctxt, VideoActivty.class);
PendingIntent psthu = PendingIntent.getActivity(ctxt, 0, sthu, 0);
Calendar calSet7 = Calendar.getInstance();
calSet7.set(Calendar.MONTH, c.get(Calendar.MONTH));
calSet7.set(Calendar.YEAR, c.get(Calendar.YEAR));
calSet7.set(Calendar.DAY_OF_WEEK, 5);
calSet7.set(Calendar.HOUR_OF_DAY, hsthu);
calSet7.set(Calendar.MINUTE, msthu);
calSet7.set(Calendar.SECOND, 0);
calSet7.set(Calendar.MILLISECOND, 0);
mgr.setRepeating(AlarmManager.RTC_WAKEUP, calSet7.getTimeInMillis(),
7 * 24 * 60 * 60 * 1000, psthu);
// INTENT THAT SHOULD KILL THE ACTIVITY
Intent fthu = new Intent(ctxt, VideoActivty.class);
fthu.putExtra("finish", true);
PendingIntent pfthu = PendingIntent.getActivity(ctxt, 0, fthu, 0);
Calendar calSet8 = Calendar.getInstance();
calSet8.set(Calendar.MONTH, c.get(Calendar.MONTH));
calSet8.set(Calendar.YEAR, c.get(Calendar.YEAR));
calSet8.set(Calendar.DAY_OF_WEEK, 5);
calSet8.set(Calendar.HOUR_OF_DAY, hfthu);
calSet8.set(Calendar.MINUTE, mfthu);
calSet8.set(Calendar.SECOND, 0);
calSet8.set(Calendar.MILLISECOND, 0);
mgr.setRepeating(AlarmManager.RTC_WAKEUP, calSet8.getTimeInMillis(),
7 * 24 * 60 * 60 * 1000, pfthu);
後建議的修改:
顯然現在只有1號的PendingIntent熄滅:
Intent sthu = new Intent(ctxt, VideoActivty.class);
sthu.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent psthu = PendingIntent.getActivity(ctxt, 1, sthu, 0);
Calendar calSet7 = Calendar.getInstance();
calSet7.set(Calendar.MONTH, c.get(Calendar.MONTH));
calSet7.set(Calendar.YEAR, c.get(Calendar.YEAR));
calSet7.set(Calendar.DAY_OF_WEEK, 5);
calSet7.set(Calendar.HOUR_OF_DAY, hsthu);
calSet7.set(Calendar.MINUTE, msthu);
calSet7.set(Calendar.SECOND, 0);
calSet7.set(Calendar.MILLISECOND, 0);
//calSet.setTimeZone(TimeZone.getTimeZone("UTC"));
mgr.setRepeating(AlarmManager.RTC_WAKEUP, calSet7.getTimeInMillis(),
7 * 24 * 60 * 60 * 1000, psthu);
Log.e("","setto alarm per giovedì");
// INTENT
Intent fthu = new Intent(ctxt, VideoActivty.class);
fthu.putExtra("finish", true);
PendingIntent pfthu = PendingIntent.getActivity(ctxt, 2, fthu, 0);
Calendar calSet8 = Calendar.getInstance();
calSet8.set(Calendar.MONTH, c.get(Calendar.MONTH));
calSet8.set(Calendar.YEAR, c.get(Calendar.YEAR));
calSet8.set(Calendar.DAY_OF_WEEK, 5);
calSet8.set(Calendar.HOUR_OF_DAY, hfthu);
calSet8.set(Calendar.MINUTE, mfthu);
calSet8.set(Calendar.SECOND, 0);
calSet8.set(Calendar.MILLISECOND, 0);
mgr.setRepeating(AlarmManager.RTC_WAKEUP, calSet8.getTimeInMillis(),
7 * 24 * 60 * 60 * 1000, pfthu);
二號的PendingIntent的目的是
開展活動(由第一審理機構開始)
要完成自己的活動。
(
綜上所述:
第一的PendingIntent啓動活動,
第二的PendingIntent到thell活動完成
)
這裏是活動的代碼:
public class VideoActivty extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
VideoView videoHolder = new VideoView(this);
Uri video = Uri.parse("android.resource://" + getPackageName() + "/"
+ R.raw.ingress);
videoHolder.setVideoURI(video);
setContentView(videoHolder);
videoHolder.start();
@Override
protected void onNewIntent (Intent i){
//HERE I TRY TO TELL THE ACTIVITY (VIA THE SECOND INTENT) TO SHUT DOWN
if(i.getBooleanExtra("finish",false)){
finish();
}
}
}
什麼時候你想關閉你的活動? –