私のonPause()でスレッドを停止しようとしていますが、スレッドはまだ実行され、スレッドが期限切れになったときに送信される通知を受け取ります。それは私がすべての権利を設定しているようだ...私のnotifcationはうまく動作し、8000睡眠後に現れます。しかし、ユーザーが/ onPause()を離れると、通知はまだポップアップします。スレッドはonPauseで停止しません
private static final int MY_NOTIFICATION_ID=1;
private NotificationManager notificationManager;
private Notification myNotification;
Thread timer;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.expire);
timer = new Thread(){
public void run(){
try{
sleep(8000);
} catch (InterruptedException e){
e.printStackTrace();
}finally{
NotificationManager notificationManager =
(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
myNotification = new Notification(R.drawable.missedcall,
"Exired",
System.currentTimeMillis());
Context context = getApplicationContext();
String notificationTitle = "Time Expired";
String notificationText = "Try next time";
Intent myIntent = new Intent();
PendingIntent pendingIntent
= PendingIntent.getActivity(CallScreen.this,
0, myIntent,
Intent.FLAG_ACTIVITY_NEW_TASK);
myNotification.defaults |= Notification.DEFAULT_SOUND;
myNotification.flags |= Notification.FLAG_AUTO_CANCEL;
myNotification.setLatestEventInfo(context,
notificationTitle,
notificationText,
pendingIntent);
notificationManager.notify(MY_NOTIFICATION_ID, myNotification);
finish();
}
}
};
timer.start();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
timer.stop();
finish();
}
私は何をするつもりだと思う何をして、私はそれが動作することをテストした動きでありますnotepcationを 'sleep(8000);の中でtryに入れ、' onPause() 'の中で' timer.interrupt() 'を呼び出します。そうすれば8秒間実行すればnotifcationが出て、アクティビティは'finish()'を実行しても、ユーザーが8秒以内に新しいアクティビティを終了または開始すると、スレッドは 'onPause()'の 'timer.interrupt()'を呼び出し、期限切れの通知を見ません。 これは基本的に私が欲しいものです。あなたはそうしたやり方で何か問題を見ますか? – user961389