6

Có cách nào để dừng ứng dụng chạy nhiều phiên bản không? Tôi đã thử một ví dụ trong bản kê khai nhưng cũng không thành công.nhiều trường hợp chạy của cùng một ứng dụng trong kitkat android

Tôi đã tạo một ứng dụng demo để tìm nạp bạn bè trên Facebook. Nó hoạt động tốt trong 4.2.2 và khác nhưng trong kitkat 4.4.2 sau khi đăng nhập khi tôi fatch bạn bè nó treo và trong ứng dụng DDMS cho thấy nhiều trường hợp chạy của cùng một ứng dụng.

Có ai có thể giúp tôi hoặc hướng dẫn vấn đề là gì không?

Dưới đây là file manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="18" /> 


<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 


<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:name="com.example.MyApplication" > 


    <activity 
     android:name=".Splash" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name="com.example.ui.newHome" 
     android:screenOrientation="portrait" /> 


    <activity 
     android:name="com.example.ui.FriendsList" 
     android:screenOrientation="portrait" /> 


    <activity 
     android:name="com.facebook.LoginActivity" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 

    <meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/app_id" /> 
</application> 

+1

thử 'android: launchMode = "singleTask" 'cho activty của bạn trong manifest –

+0

tôi đã thử với nó cũng nhưng doesnt work.i đang phải đối mặt với vấn đề trong kitkat chỉ – Amish

+0

Luôn luôn chỉ có một trường hợp của một ứng dụng. Có thể có nhiều hơn một phiên bản * hoạt động * cho một ứng dụng. – CommonsWare

Trả lời

0

Hãy thử như sau trong hoạt động phóng trong onCreate

if(!isTaskRoot()){ 
      finish(); 
      return; 
     } 

này sẽ ngăn chặn các trường hợp bội số của cùng một ứng dụng.

+0

Bạn không cần phải thực hiện điều đó – Proverbio

+0

Điều này đảm bảo một phiên bản ứng dụng của bạn và tôi chắc chắn câu hỏi đó chỉ liên quan đến điều đó. phải không? –

+0

Khung công tác android cung cấp một cách để lưu trữ, mà thậm chí không yêu cầu một dòng mã. – Proverbio

1

Bạn nên sử dụng theo chế độ tài liệu chính thức = "singleTask" hoặc mode = "singleInstance".

singleTask

Hệ thống này tạo ra các hoạt động tại thư mục gốc của một nhiệm vụ mới và các tuyến đường ý định nó. Tuy nhiên, nếu một cá thể của hoạt động đã tồn tại, hệ thống sẽ định tuyến ý định đến cá thể hiện có thông qua một cuộc gọi đến phương thức onNewIntent() của nó, chứ không phải tạo một phương thức mới.

singleInstance

Tương tự như "singleTask", ngoại trừ việc hệ thống không khởi động bất kỳ hoạt động khác vào nhiệm vụ giữ ví dụ. Hoạt động này luôn là thành viên duy nhất và duy nhất trong nhiệm vụ của nó.

http://developer.android.com/guide/topics/manifest/activity-element.html

Nếu vấn đề của bạn kéo dài xin vui lòng gửi ngoại trừ vết đống.

0

Trong file manifest của bạn bao gồm
android:launchMode="singleInstance"

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