Android가 알림 표시줄 정보를 클릭한 후 실행 중인 프로그램으로 돌아가고 모든 activity를 종료합니다
6210 단어 Activity
우선, 그 중 하나는 알림 표시줄에서 앱을 여는 것이 새로운activity이고 새로운task더미에 존재하기 때문일 수 있습니다. 이 경우restartpackage() 방법으로 앱의 모든activity를 닫을 수 없습니다. 해결 방법은 알림 표시줄에서 앱을 열 때 원래의 activity로 돌아오거나 모든task의 activity를 닫을 수 있습니다.
방법2는 시도해 보았지만 모든activity를 어떻게 꺼내야 할지 모르겠고task도 어떻게 제거해야 할지 모르겠습니다.방법은 지금 생각해 보면 이런 방법을 추천해야 한다. 찾은 방법 자료를 먼저 붙인다.
, 。
public void shownotification(String msg)
{
NotificationManager barmanager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Notification notice = new Notification(android.R.drawable.stat_notify_chat," ",System.currentTimeMillis());
notice.flags=Notification.FLAG_AUTO_CANCEL;
Intent appIntent = new Intent(Intent.ACTION_MAIN);
//appIntent.setAction(Intent.ACTION_MAIN);
appIntent.addCategory(Intent.CATEGORY_LAUNCHER);
appIntent.setComponent(new ComponentName(this.getPackageName(), this.getPackageName() + "." + this.getLocalClassName()));
appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);// ,
PendingIntent contentIntent =PendingIntent.getActivity(this, 0,appIntent,0);
notice.setLatestEventInfo(this," "," :"+msg, contentIntent);
barmanager.notify(STATUS_BAR_ID,notice);
}
,
((( : ( Run As ), 【 】 , , Activity, Activity 。
, 。 , 。)))
“ 。Intent.FLAG_ACTIVITY_CLEAR_TOP“,
그리고 여기도 설치하는 게 좋을 것 같아요.
Activity , , Activity Activity, Activity。
FLAG_ACTIVITY_NEW_TASK Activity 。 Activity Task, HOME Activity, BACK Activity。 ( Notification) Task Activity, Task , FLAG_ACTIVITY_NEW_TASK Intent startActivity()。 Activity, Activity 。 :
<activity android:name="ShowMessageActivity"
android:launchMode="singleTask"></activity>
:
<activity> launchMode :
standard ( )
singleTop
singleTask
singleInstance
더 자세히 보면 원 블로그는http://www.cnblogs.com/hanyonglu/archive/2012/04/15/2450551.html
먼저 붙이고 내일 실천 테스트를 한 후 실제 실현 방법을 붙인다.
인터넷에서 이리저리 찾았는데 찾은 문장이 매우 어려운 것 같았다. 이상의 방법은 테스트를 거쳐도 소용이 없었다. 그리고 나는 각 flag 표시를 자세히 뒤져서 이 Intent를 발견했다.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY는 내 눈앞을 밝게 했지만 테스트를 통해 나도 쓸모가 있는지 모르겠다. 왜냐하면 나의 요구는 그것을 보여주기 위한 것이 아니라 나의 응용 프로그램이 닫힐 때 문제가 생겼기 때문이다. 닫힌 후에 다시 열면 역사적인 activity에 들어가기 때문이다.
사실 특별한 수요가 없으면 어떤 flag도 추가하지 않아도 됩니다. 제 요구는 프로그램에 종료 버튼이 있기 때문에 앱을 완전히 종료하는 것도 매우 번거롭습니다. 여러 가지 방법으로 n번의 테스트를 통해api level8 이하에서activity Manager만 사용할 수 있다는 것을 발견했습니다.restartPackage(packname)가 닫히고 android4.x시스템은 이런 방법이 안 된다는 것을 발견했고 공식 문서도 이 방법을actManager로 바꾸었다.killBackground Processes, 그러나 각 버전을 호환하고 싶다면 이 방법을 사용할 수 없습니다. 나중에 홈 키 기능으로 메인 인터페이스로 돌아가고 싶습니다. 방법:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); // , activity
ntent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
finish();
테스트 결과는 알림 표시줄에서 응용 프로그램을 열면 이 종료 방법은 모든 역사적 activity를 종료할 수 없기 때문에 알림 표시줄에서 응용 프로그램을 열면task를 새로 만들었고 Intent를 만들었다고 할 수 있습니다.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET도 내가 생각하는 역할을 하지 못했다. 아니면 현재task만 정리했다. 왜냐하면 내가 알림란에 열려 있는activity를android:launchMode="singleTask"(AndroidManifest.xml)로 설정했을 때, 종료한 후에 모든activity를 제거한 것 같다. 즉 알림란이 앱을 열었을 때 새로운task가 없다는 것이다.어쨌든 기능은 나의 요구에 도달한 것 같다. 보아하니 알림 표시줄을 열면 기본적으로 새로운task의 절차는 바꿀 수 없고 열려있는activity의 특성만 바꿀 수 있을 것 같다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
안드로이드 학습 - Intent👀 intent란? intent 는 Activity 의 메시지 객체입니다. 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있습니다. 다른 액티비티로 이동 다른 액티비티로 데이터 전달 👀 Activity 실행...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.