2017-01-07 9 views
1

의사는 https://developer.android.com/reference/android/content/Intent.html#ACTION_MAIN은 진입 점이라고 말합니다.action = android.intent.action.ACTION_MAIN 인 인 텐트 필터가있는 둘 이상의 액티비티가 각각 무엇을 의미합니까?

예제 코드 :

<activity android:name="org.A.A" 
      android:theme="@style/NoTitle" 
      android:screenOrientation="behind" 
      android:launchMode="singleTask"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
      </intent-filter> 
     </activity> 

     <activity android:name="org.A.C" 
      android:theme="@style/NoTitle" 
      android:launchMode="singleTop" 
      android:screenOrientation="behind"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
      </intent-filter> 
     </activity> 

     <activity android:name="org.A.B" 
      android:theme="@style/NoTitle" 
      android:launchMode="singleTop" 
      android:screenOrientation="behind"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
      </intent-filter> 
     </activity> 

1) 그래서 사용 android.intent.action.ACTION_MAIN 내가 활동이나 수신기 또는 서비스)을 의미 상위 구성 요소 (상위 구성 요소에 대한 진입 점 역할을?

2) 예인 경우 언급 한 CATEGORY가 없으므로 입력 지점을 가리 킵니다.

답변

1

Android 앱은 다양한 구성 요소로 구성됩니다. 예 : Activity, Service, BroadcastReceiverContentProvider이며 각 구성 요소는 응용 프로그램의 진입 점 의 역할을 할 수 있습니다.

의 예로 들어 활동 보자

, 당신은 행동 다음

<intent-filter> 
    <action android:name="com.yourapp.SOME_ACTION" /> 
    <category android:name="android.intent.category.DEFAULT"/> 
</intent-filter> 

와 응용 프로그램에서 활동을 정의하고 난 의도를 다음과 같이 응용 프로그램에서 활동을 시작합니다.

Intent intent = new Intent("com.yourapp.SOME_ACTION"); // same action 
startActivity(intent); 

이제 어떻게됩니까? 시스템에서 com.yourapp.SOME_ACTION 작업으로 활동을 검색하고 현재 시나리오에서 앱에서 com.yourapp.SOME_ACTION으로 생성 한 활동이 발견되면 앱을 시작합니다 (아직 시작하지 않은 경우) 앱의 활동.

이제 을 입력하십시오. Activitycom.yourapp.SOME_ACTION을 사용하여 앱에을 입력하십시오. 다른 구성 요소의 경우에도 똑같은 일이 발생합니다.

+0

답변 해 주셔서 감사합니다. ".... 그리고 각 구성 요소는 앱의 진입 점 역할을 할 수 있습니다." - "각 구성 요소는 앱 외부에서 앱의 진입 점 역할을 할 수 있습니다"라는 의미입니까? – user3705478

+0

예. 사실입니다. – mallaudin

+0

의도 필터 예제에서 범주를 사용하는 것으로 나타났습니다. 하지만 내 질문 2)과 내가 준 코드에는 범주가 없지만 단일 AndroidManifest.xml 아래의 모든 활동에는 action_MAIN이 있습니다. – user3705478

0

MAIN 활동의 활동은 응용 프로그램의 진입 점이 될 것입니다. 하나가 있다면 그 활동이 좋고 여러 개가 있으면 응용 프로그램에 참여할 수있는 여러 활동을 가질 수 있습니다.

 <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 

그러나 활동을 위해 CATEGORY를 제공 한 경우 해당 진입 점에 대한 실행 프로그램을 만듭니다.

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

한다고 가정이 개 활동은 진입 점으로 또 다른 하나가됩니다 진입 점 두 번째로 하나 개의 활동을해야합니다 하나를 생성됩니다 실행이 응용 프로그램 아이콘으로 모두 주요 활동 및 카테고리를 가지고있다.

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