2010-01-14 44 views
13

Cho phép nói rằng tôi khởi chạy ứng dụng của mình từ màn hình chính, điều hướng qua một số hoạt động, sau đó tôi nhấn phím chủ và thực hiện một việc khác trong ứng dụng Gmail.Khôi phục ngăn ứng dụng android từ nền

Sau khi kiểm tra xong thư, tôi nhấn phím home lần nữa để thoát ứng dụng Gmail và nhấp lại vào biểu tượng ứng dụng của tôi ở màn hình chính để quay lại.

Khi tôi quay lại ứng dụng của mình, tôi muốn nó trở lại hoạt động cuối cùng tôi đã ở, KHÔNG bắt đầu một phiên hoàn toàn mới. Tôi đã cố gắng tìm ra điều này cả ngày.

manifest của tôi cho hoạt động đầu tiên của tôi là như sau:

<activity android:name=".Main" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait" 
       android:alwaysRetainTaskState="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

Phạm trù thuộc tính Launcher làm cho ứng dụng của tôi luôn luôn bắt đầu hoạt động chính, vì vậy tôi không biết làm thế nào để đi về việc khôi phục hoạt động cuối cùng. Mọi người đã nói với tôi để sử dụng sharedpreferences để lưu các hoạt động cuối cùng và tải nó trên Launch, nhưng tôi không nghĩ rằng nó có ý định được thực hiện theo cách đó bởi vì nó không phải là rất thanh lịch.

+0

Biểu hiện của bạn có vẻ tốt; nó sẽ hoạt động như bạn mong đợi. Bất kỳ cơ hội bạn chỉ nhìn thấy điều này dưới trình gỡ rối, giống như câu hỏi này gần như giống hệt nhau? http://stackoverflow.com/questions/2061143/android-keep-tasks-activity-stack-after-restart-from-home/2061447 –

+5

tôi figured nó ra giống như tôi đã nhận được câu trả lời của bạn, nó không phải là eclipse debug liên quan nhưng thay vào đó nó liên quan đến cấu hình chạy: tôi đã có hành động khởi chạy được đặt thành: Khởi chạy Hoạt động mặc định trong tab Android. Tôi đã thay đổi điều này thành "Không làm gì" và nó đã làm điều đó. không thể tin rằng tôi mất quá nhiều thời gian để nhận ra điều này! cảm ơn – jlim

+0

Ah ha, cũng tốt để biết! –

Trả lời

0

Hãy thử sử dụng một trong những biểu hiện của bạn trong:

<activity android:launchMode=["multiple" | "singleTop" | 
           "singleTask" | "singleInstance"] ... 
1

Tôi nghĩ rằng cách duy nhất của nó bởi vì những gì xảy ra khi bạn đang tung ra một ứng dụng là ứng dụng Launcher gửi ý định "android.intent.action.MAIN "Và hoạt động duy nhất trong ứng dụng của bạn phản hồi mục đích này là hoạt động chính của bạn, do đó nó được kích hoạt. Vì vậy, điều duy nhất bạn có thể làm là lưu một nơi nào đó phiên của bạn và hoạt động khởi động nếu có phiên đã lưu khôi phục ứng dụng về trạng thái trước đó.

0

Bật tính năng onResume() và onPause được triển khai đúng chưa?

protected void onResume(){ 
    super.onResume(); 
} 

protected void onPause() { 
    super.onPause(); 
} 
Các vấn đề liên quan