developer tip

UI없이 활동을 시작하는 방법은 무엇입니까?

copycodes 2020. 11. 22. 19:55
반응형

UI없이 활동을 시작하는 방법은 무엇입니까?


UI없이 주 기능에서 활동을 시작할 수 있습니까? 즉, 다른 활동 주위에 일종의 "래퍼"를 만드는 방법이 있습니다. 즉, 주 활동을 시작하면 자동으로 다른 활동으로 이동합니다.

가능하지 않은 경우 뒤로 버튼을 클릭해도 빈 UI로 이동하지 않도록 스택에서 기본 활동을 제거하는 방법이 있습니까? 다음은 내가하려는 작업의 예입니다.

public class WrapperActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:555-1212"));
        startActivity(intent);
    }
}

Intent 플래그를 추가해야합니다.

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

또는

finish();텐트를 실행 한 후 " "를 호출 합니다.


Android는 또한이를 위해 특별히 테마를 제공합니다.

android:theme="@android:style/Theme.NoDisplay"

매니페스트에서 활동을 선언 할 때 테마를 사용합니다. "@android:style/Theme.Translucent.NoTitleBar"

전의:

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

Android 6.0 이상을 사용하거나 Target SDK가 23 이상인 경우 테마 android:theme = "@android:style/Theme.NoDisplay"가 있으면 오류와 함께 충돌이 발생 did not call finish() prior to onResume() completing합니다. 사실 이것은 Google 개발자가 여기에서 인식 한 버그 입니다.

따라서 해결 방법으로 다음 테마가있는 활동을 사용하는 것이 좋습니다.

android:theme = "@android:style/Theme.Translucent.NoTitleBar"


사용

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

Brian515가 언급 한 것은 훌륭하게 작동합니다. 이 메서드는 사용자에게 UI를 표시 할 필요없이 호출, 시작, 서비스 등을 결정하는 진입 점 Activity를 만드는 데 유용합니다. finish()의도를 시작한 후에 사용하는 것을 잊지 마십시오 .


나는 이것이 당신에게 많은 도움이 될 것이라고 생각합니다.

<activity  android:name = "MyActivity" 
          android:label = "@string/app_name" 
          android:theme = "@android:style/Theme.NoDisplay" >

여기에 묻는 질문과 유사 합니다. 기록 스택에서 활동 제거

그렇다면 다음을 사용할 수 있습니다.

FLAG_ACTIVITY_NO_HISTORY

이것은 스택에서 활동을 지우는 데 작동합니다.

최근 앱에서 제외해야하는 경우 (홈 키를 길게 누름) 다음 플래그를 사용할 수 있습니다.

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS


나는 전체 활동 스택을 백그라운드에 두는 데 사용 moveTaskToBack(true)했습니다 onResume().


@android:style/Theme.Translucent.NoTitleBar"위의 답변 중 일부에서 언급 한대로 매니페스트에 추가하십시오 .

또한 setContentView(R.layout.your_activity);activity.java 파일에서 행을 제거 하십시오.


UI와 상호 작용하지 않는 경우 수행하려는 작업은 Android 서비스처럼 들립니다.

참고 URL : https://stackoverflow.com/questions/2704084/how-to-launch-an-activity-without-a-ui

반응형