Tôi gặp sự cố với hai hoạt động mà tôi không thể giải quyết:Hoạt động được khởi chạy từ thiết bị phát sóng, giữ trong các tác vụ gần đây mặc dù đã hoàn thành
Tôi có một hoạt động báo thức bằng báo thức người quản lý, trong 3 giây, người nhận báo thức sẽ khởi chạy hoạt động B chỉ có nút kết thúc.
Nếu tôi lập trình trình quản lý cảnh báo từ A và kết thúc hoạt động này, nhấn nút quay lại, trong 3 giây hoạt động B sẽ xuất hiện. Tất cả đều bình thường. Vấn đề là như sau: nếu tôi mở lại ứng dụng bằng trình khởi chạy, hệ thống khởi động một hoạt động, nhưng nếu tôi khởi động ứng dụng bằng cách nhấn và giữ nút Home (các tác vụ được sử dụng gần đây), tôi luôn mở hoạt động B. Tôi cần khi tôi hoàn thành hoạt động B, nếu tôi mở lại ứng dụng từ bất cứ đâu, hoạt động A sẽ mở.
Tôi đã cố gắng thêm noHistory vào hoạt động B, nhưng vấn đề vẫn tiếp tục.
Đây là mã của A hoạt động:
public class ActivityA extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
Button b=(Button) findViewById(R.id.initTimer);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
programTimer();
}
});
}
private void programTimer() {
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReciver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000 , pIntent);
}
}
B hoạt động:
public class ActivityB extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
Button button= (Button) findViewById(R.id.bFinish);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
AlarmReciver:
public class AlarmReciver extends android.content.BroadcastReceiver {
private static final String DEBUG_TAG="ReceptorAlarma";
@Override
public void onReceive(Context context, android.content.Intent intent) {
//lanzar activity
Intent i = new Intent(context, ActivityB.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
Manifest:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".ActivityA"
android:label="@string/title_activity_activity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ActivityB">
</activity>
<receiver android:name=".AlarmReciver" >
</receiver>
</application>
nhờ thời gian của bạn.