2015-09-24 22 views
15

Tôi đang viết SDK để sử dụng trong ứng dụng lưu trữ. SDK của tôi tạo thông báo cần tiếp tục ứng dụng, giống như cách bạn nhấn vào nút tác vụ và chọn ứng dụng hoặc nhấn và giữ nút Home và chọn ứng dụng của bạn.Tiếp tục ứng dụng của tôi giống như cách nó được tiếp tục từ lịch sử

Dưới đây là những gì tôi đã cố gắng để làm:

 PackageManager packageManager = context.getPackageManager(); 
     intent = packageManager.getLaunchIntentForPackage(context.getPackageName()); 
     intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY); 
     intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
     intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

     PendingIntent pendingIntent = PendingIntent.getActivity(context, 10, intent, flags); 
     Notification notification = new NotificationCompat.Builder(context). 
      setContentIntent(pendingIntent). 
      ... 
      build(); 

     getNotificationManager().notify(NOTIFICATION_ID, notification); 

Tôi đã thử nghiệm này trên ứng dụng máy chủ với hoạt động một phóng với ăn trưa chế độ "mặc định" (không có chế độ phóng được thiết lập trong manifest) và sdk của tôi cũng có 1 hoạt động với chế độ ăn trưa "singleTask".

  1. Vì vậy, tôi ăn trưa ứng dụng
  2. Bắt đầu hoạt động SDK của tôi nó bắn một thông báo thử nghiệm trong phương pháp onCreat.
  3. Tôi nhấn nhà
  4. Tôi nhấp vào thông báo.

Sau khi thực hiện các bước này, tôi mong đợi được trả lại hoạt động của mình nhưng thay vào đó nó sẽ mở một phiên bản khác của hoạt động của trình khởi chạy máy chủ. Tôi đang thiếu gì? Làm cách nào để tôi thực hiện công việc này?

+1

luồng không rõ ràng. –

+1

@RahulTiwari Vì vậy, là bình luận của bạn;) –

+0

:) Tôi không thể hiểu một vài điều rõ ràng: SDK có phải là một ứng dụng riêng biệt không? hoặc một phần đơn đăng ký của bạn? cả hai hoạt động là một phần của cùng một ứng dụng? –

Trả lời

0

Theo ứng dụng máy chủ yêu cầu của bạn cần đặt "singleTop" chế độ khởi chạy trên hoạt động của trình khởi chạy và từ SDK của bạn, bạn không thể đặt nó. Bằng cách nào đó bạn cần phải nói với ứng dụng máy chủ để đặt cờ này.

Khi bạn đặt chế độ khởi chạy "singleTop", bạn sẽ nhận được ý định mới bằng cách ghi đè phương thức NewIntent() và hoạt động của bạn sẽ ở trạng thái giống như trước.

0

Trong file AndroidManifest.xml của bạn, hãy thực hiện kê khai hoạt động chính của bạn và sử dụng android:launchMode="singleTask" như thế này:

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:launchMode="singleTask" 
    android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Bằng cách này, nếu nhiệm vụ đang chạy ở chế độ nền, hệ thống sẽ mang nó trên buông xả foreground người dùng tiếp tục những gì anh ấy đã làm trước khi hoạt động được đẩy trên nền.

1

Nếu bạn muốn tiếp tục từ nơi bạn tạm dừng, hãy xóa cờ "NEW_TASK". Nó sẽ không tạo ra nhiệm vụ mới. Hy vọng bạn thấy nó hữu ích trong công việc của bạn.

Các vấn đề liên quan