Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Android С¼¼ÇÉ£º ÕâÀﺭ¸ÇÁËËùÓÐʵÏÖ ¡°Ò»¼üÍ˳ö App¡± µÄ·½·¨

 
À´Ô´£ºÀ´×ÔÍøÂç ·¢²¼ÓÚ£º 2017-8-15
  2247  次浏览      27
 

ǰÑÔ

ÔÚ Android¿ª·¢ÖУ¬»á¾­³£´æÔÚ ¡°Ò»¼üÍ˳öApp¡± µÄÐèÇó

µ«ÊÐÃæÉÏÁ÷´«×Å Ì«¶à²»¿ÉÓõġ°Ò»¼üÍ˳öApp¡±¹¦ÄÜʵÏÖ

±¾ÎĽ«È«Ãæ×ܽᡰһ¼üÍ˳öApp¡±µÄʵÏÖ·½Ê½£¬²¢ÎªÄãһһʵ¼ù£¬Ï£ÍûÄãÃÇ»áϲ»¶¡£

Ŀ¼

ÐèÇó±¾ÖÊ

Ò»¼üÍ˳ö App ÆäʵÊÇ Á½¸öÐèÇó£º

1.Ò»¼ü½áÊøµ±Ç°AppËùÓеÄActivity

2.Ò»¼ü½áÊøµ±Ç°App½ø³Ì

¼´ ÐèÒª2¸ö²½Öè ²Å¿É Íê³É Ò»¼üÍ˳ö App ÐèÇó¡£ÏÂÃæ£¬ÎÒ½«¸ù¾ÝÕâÁ½¸ö²½Öè½øÐй¦ÄÜʵÏÖ½²½â¡£

¹¦ÄÜʵÏÖ

£¨²½Öè1£©Ò»¼ü½áÊøµ±Ç° App ËùÓÐ Activity

ʵÏÖ·½·¨ÀàÐÍ

Ö÷Òª·ÖΪ2Àࣺͨ¹ý Android×é¼þ & ×ÔÉíʵÏÖ

¾ßÌåÈçÏÂͼ£º

×¢£ºÉÏÊö·½·¨½ö½öÖ»ÊǽáÊøµ±Ç°AppËùÓеÄActivity £¨ÔÚÓû§µÄ½Ç¶ÈȷʵÊÇÍ˳öÁË App£©£¬µ«Êµ¼ÊÉϸÃAppµÄ½ø³Ì»¹Î´½áÊø¡£

¾ßÌå½éÉÜ

a. ͨ¹ý Android ×é¼þ£ºActivity

·½·¨1£º²ÉÓÃActivityÆô¶¯Ä£Ê½£ºSingleTask

Ô­Àí

1.½« AppµÄÈë¿Ú Activity ²ÉÓà SingleTask Æô¶¯Ä£Ê½

a. Èë¿Ú Activity ´Ëʱ´¦ÓÚÕ»µ×

b. ¹ØÓÚ SingleTaskµÄÔ­ÀíÈçÏ£º

1.µ±ÐèÒªÍ˳ö AppʱÆô¶¯Èë¿Ú Activity

2.´ËʱÈë¿Ú Activity ÉϲãµÄActivityʵÀý¶¼½«×Ô¶¯¹Ø±ÕÒÆ³ý & ×ÔÉí±»·ÅÖÃÔÚÕ»¶¥£¨ÕâÊÇSingleTaskÆô¶¯Ä£Ê½µÄÌØµã£©

3.ͨ¹ýÔÚÈë¿Ú Activity »Øµ÷µÄonNewIntent()ÖйرÕ×ÔÉí¼´¿É

4.ÈôÔÚºóÃæµÄActivityÆô¶¯ ÈÎÎñÕ»µ×µÄActivityʱ£¬¾Í»áµ÷ÓÃÈÎÎñÕ»µ×ActivityµÄonNewIntent()

5.¾ßÌåʵÏÖ

²½Öè1£º½« AppµÄÈë¿Ú Activity ÉèÖÃ³É SingleTask Æô¶¯Ä£Ê½


// AndroidMainifest.xmlÖеÄActivityÅäÖýøÐÐÉèÖÃ

<activity

android:launchMode="singleTask"
//ÊôÐÔ
//standard£º±ê׼ģʽ
//singleTop£ºÕ»¶¥¸´ÓÃģʽ
//singleTask£ºÕ»ÄÚ¸´ÓÃģʽ
//singleInstance£ºµ¥Àýģʽ
//Èç²»ÉèÖã¬ActivityµÄÆô¶¯Ä£Ê½Ä¬ÈÏΪ ±ê׼ģʽ£¨standard£©
</activity>

²½Öè2£ºÔÚÈë¿Ú ActivityÖØÐ´ onNewIntent()

// Ôڸ÷½·¨´«ÈëÒ»±ê־λ±êʶÊÇ·ñÒªÍ˳öApp & ¹Ø±Õ×ÔÉí
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent != null) {
// ÊÇ·ñÍ˳öAppµÄ±êʶ
boolean isExitApp = intent.getBooleanExtra("exit", false);
if (isExitApp) {
// ¹Ø±Õ×ÔÉí
this.finish();
}
}
}

²½Öè3£ºÔÚÐèÒªÍ˳öʱµ÷Óà exitApp()

private void exitApp() {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("exit", true);
context.startActivity(intent);

// ½áÊø½ø³Ì
// System.exit(0);
}

1.Óŵã

ʹÓüòµ¥ & ·½±ã

2.ȱµã

¹æ¶¨ AppµÄÈë¿ÚActivity²ÉÓÃSingleTaskÆô¶¯Ä£Ê½

ʹÓ÷¶Î§¾ÖÏÞ£ºÖ»ÄܽáÊøµ±Ç°ÈÎÎñÕ»µÄActivity£¬Èô³öÏÖ¶àÈÎÎñÕ»£¨¼´²ÉÓÃSingleInstanceÆô¶¯Ä£Ê½£©ÔòÎÞ·¨´¦Àí

3.Ó¦Óó¡¾°

Activityµ¥ÈÎÎñÕ»

·½·¨2£º²ÉÓÃActivityÆô¶¯±ê¼Çλ

4.Ô­Àí£º¶ÔÈë¿ÚActivity²ÉÓà 2 ±ê¼Çλ£º

Intent.FLAG_ACTIVITY_CLEAR_TOP£ºÏú»ÙÄ¿±êActivityºÍËüÖ®ÉϵÄËùÓÐActivity£¬ÖØÐ´´½¨Ä¿±êActivity

Intent.FLAG_ACTIVITY_SINGLE_TOP£ºÈôÆô¶¯µÄActivityλÓÚÈÎÎñÕ»Õ»¶¥£¬ÄÇô´ËActivityµÄʵÀý¾Í²»»áÖØ½¨£¬¶øÊÇÖØÓÃÕ»¶¥µÄʵÀý( µ÷ÓÃonNewIntent()£©

¾ßÌåʹÓ㨴ÓMainActivity£¨Èë¿ÚActivity£© Ìø×ªµ½ Activity2 & Ò»¼üÍ˳ö£©

²½Öè1£ºÔÚMainActivity ÖÐÉèÖÃ ÖØÐ´ onNewIntent()

MainActivity.Java

// ÉèÖà °´Å¥ Ìø×ªµ½Activity2
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(MainActivity.this, Activity2.class));

}

});
}

// ÔÚonNewIntent£¨£©´«ÈëÒ»±êʶ·û
// ×÷Ó㺱êʶÊÇ·ñÒªÍ˳öApp
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent != null) {
// ÊÇ·ñÍ˳öAppµÄ±êʶ
boolean isExitApp = intent.getBooleanExtra("exit", false);
if (isExitApp) {
// ¹Ø±Õ×ÔÉí
this.finish();
}
}
// ½áÊø½ø³Ì
// System.exit(0);
}
}

²½Öè2£ºÔÚÐèÒªÍ˳öµÄµØ·½£¨Activity2£©Æô¶¯MainActivity & ÉèÖñê¼Çλ

// µ±ÐèÒªÍ˳öʱ£¬Æô¶¯Èë¿ÚActivity
Intent intent = new Intent();
intent.setClass(Activity2.this, MainActivity.class);

// ÉèÖñê¼Çλ
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// ²½Öè1£º¸Ã±ê¼Çλ×÷ÓãºÏú»ÙÄ¿±êActivityºÍËüÖ®ÉϵÄËùÓÐActivity£¬ÖØÐ´´½¨Ä¿±êActivity

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
// ²½Öè2£ºÈôÆô¶¯µÄActivityλÓÚÈÎÎñÕ»Õ»¶¥£¬ÄÇô´ËActivityµÄʵÀý¾Í²»»áÖØ½¨£¬¶øÊÇÖØÓÃÕ»¶¥µÄʵÀý( µ÷ÓÃʵÀýµÄ onNewIntent() )

// ÔÚ²½Öè1ÖУºMainActivityµÄÉϲãµÄActivity2»á±»Ïú»Ù£¬´ËʱMainActivityλÓÚÕ»¶¥£»ÓÉÓÚ²½Öè2µÄÉèÖã¬ËùÒÔ²»»áн¨MainActivity¶øÊÇÖØÓÃÕ»¶¥µÄʵÀý&µ÷ÓÃʵonNewIntent()

// ´«Èë×Ô¼ºÉèÖõÄÍ˳öApp±êʶ
intent.putExtra("exit", true);

startActivity(intent);

1.Óŵã

ʹÓüòµ¥ & ·½±ã

2.ȱµã

ʹÓ÷¶Î§¾ÖÏÞ£ºÖ»ÄܽáÊøµ±Ç°ÈÎÎñÕ»µÄActivity£¬Èô³öÏÖ¶àÈÎÎñÕ»£¨¼´²ÉÓÃSingleInstanceÆô¶¯Ä£Ê½£©ÔòÎÞ·¨´¦Àí

3.Ó¦Óó¡¾°

Activityµ¥ÈÎÎñÕ»

·½·¨3£ºÍ¨¹ýϵͳÈÎÎñÕ»

4.Ô­Àí£ºÍ¨¹ý ActivityManager »ñÈ¡µ±Ç°ÏµÍ³µÄÈÎÎñÕ» & °ÑÕ»ÄÚËùÓÐActivityÖð¸öÍ˳ö

5.¾ßÌåʹÓÃ

@TargetApi(Build.VERSION_CODES.LOLLIPOP)

// 1. ͨ¹ýContext»ñÈ¡ActivityManager
ActivityManager activityManager = (ActivityManager) context.getApplicationContext().getSystemService

(Context.ACTIVITY_SERVICE);

// 2. ͨ¹ýActivityManager»ñÈ¡ÈÎÎñÕ»
List<ActivityManager.AppTask> appTaskList = activity

Manager.getAppTasks();

// 3. Öð¸ö¹Ø±ÕActivity
for (ActivityManager.AppTask appTask : appTaskList) {
appTask.finishAndRemoveTask();
}
// 4. ½áÊø½ø³Ì
// System.exit(0);

1.Óŵã

ʹÓüòµ¥¡¢·½±ã

2.ȱµã

ʹÓ÷¶Î§¾ÖÏÞ£ºÖ»ÄܽáÊøµ±Ç°ÈÎÎñÕ»µÄActivity£¬Èô³öÏÖ¶àÈÎÎñÕ»£¨¼´²ÉÓÃSingleInstanceÆô¶¯Ä£Ê½£©ÔòÎÞ·¨´¦Àí

¶Ô Android °æ±¾ÒªÇó½Ï¸ß£ºAndroid 5.0ÒÔÉÏ

3.Ó¦Óó¡¾°

Android 5.0ÒÔÉ쵀 Activityµ¥ÈÎÎñÕ»

b. ͨ¹ý Android ×é¼þ£º BroadcastReceiver

¼´Ê¹Óà BroadcastReceiver ¹ã²¥¼àÌý

Ô­Àí£ºÔÚÿ¸ö Activity Àï×¢²á¹ã²¥½ÓÊÕÆ÷£¨ÏìÓ¦¶¯×÷ = ¹Ø±Õ×ÔÉí£©£»µ±ÐèÒªÍ˳ö App ʱ ·¢Ë͹㲥ÇëÇó¼´¿É

¾ßÌåʵÏÖ

²½Öè1£º×Ô¶¨Òå¹ã²¥½ÓÊÕÆ÷

public class ExitAppReceiver extends BroadcastReceiver {
private Activity activity;

public ExitAppReceiver(Activity activity){
this.activity = activity;
}

@Override
public void onReceive(Context context, Intent intent) {
activity.finish();
}
}

²½Öè2£ºÔÚÿ¸ö Activity Àï×¢²á¹ã²¥½ÓÊÕÆ÷£¨ÏìÓ¦¶¯×÷ = ¹Ø±Õ×ÔÉí£©

public class Activity extends AppCompatActivity {

private ExitAppReceiver mExitAppReceiver£»

// 1. ÔÚonCreate£¨£©ÖÐ×¢²á¹ã²¥½ÓÊÕÆ÷
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mExitAppReceiver = new ExitAppReceiver(this);
registerReceiver(mExitAppReceiver,new IntentFilter(BaseApplication.EXIT));
}

// 1. ÔÚonDestroy£¨£©ÖÐ×¢Ïú¹ã²¥½ÓÊÕÆ÷
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mExitAppReceive);
}

²½Öè3£ºµ±ÐèÒªÍ˳öAppʱ ·¢Ë͹㲥ÇëÇó

context.sendBroadcast(new Intent(BaseApplication.EXIT));
// ×¢£º´Ë´¦²»ÄÜʹÓãºSystem.exit(0);½áÊø½ø³Ì
// Ô­Òò£º·¢Ë͹㲥Õâ¸ö·½·¨Ö®ºó£¬²»»áµÈµ½¹ã²¥½ÓÊÕÆ÷ÊÕµ½¹ã²¥£¬³ÌÐò¾Í¿ªÊ¼Ö´ÐÐÏÂÒ»¾äSystem.exit(0)£¬È»ºó¾ÍÖ±½Ó±ä³ÉÖ´ÐÐSystem.exit(0)µÄЧ¹ûÁË¡£

1.Óŵã

Ó¦Óó¡¾°¹ã·º£º¼æ¹Ëµ¥ / ¶àÈÎÎñÕ» & ¶àÆô¶¯Ä£Ê½µÄÇé¿ö

2.ȱµã

ʵÏÖ¸´ÔÓ£ºÐèÒªÔÚÿ¸ö Activity Àï×¢²á¹ã²¥½ÓÊÕÆ÷

3.Ó¦Óó¡¾°

ÈÎÒâÇé¿öϵÄÒ»¼üÍ˳ö App£¬µ«ÎÞ·¨ÖÕÖ¹ App ½ø³Ì

ËùÒԸ÷½·¨½ö½öÊÇÔÚÓû§µÄ½Ç¶ÈÀ´Ëµ ¡°Ò»¼üÍ˳öApp¡±

c. ×ÔÉíʵÏÖ

·½·¨1£º´´½¨ Á´±í

Ô­Àí£ºÍ¨¹ýÔÚApplication×ÓÀàÖн¨Á¢Ò»¸ö ActivityÁ´±í£º±£´æÕýÔÚÔËÐеÄActivityʵÀý£»µ±ÐèÒªÒ»¼üÍ˳öAppʱ°ÑÁ´±íÄÚËùÓÐActivityʵÀýÖð¸öÍ˳ö¼´¿É

¾ßÌåʹÓÃ

²½Öè1£ºÔÚBaseApplicationÀàµÄ×ÓÀàÀィÁ¢ActivityÁ´±í


public class Carson_BaseApplicaiton extends Application {

// ´Ë´¦²ÉÓà LinkedList×÷ΪÈÝÆ÷£¬ÔöɾËÙ¶È¿ì
public static LinkedList<Activity> activityLinkedList;


@Override
public void onCreate() {
super.onCreate();

activityLinkedList = new LinkedList<>();

registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Log.d(TAG, "onActivityCreated: " + activity.getLocalClassName());
activityLinkedList.add(activity);
// ÔÚActivityÆô¶¯Ê±£¨onCreate()£© дÈëActivityʵÀýµ½ÈÝÆ÷ÄÚ
}

@Override
public void onActivityDestroyed(Activity activity) {
Log.d(TAG, "onActivityDestroyed: " + activity.getLocalClassName());
activityLinkedList.remove(activity);
// ÔÚActivity½áÊøÊ±£¨Destroyed£¨£©£© д³öActivityʵÀý
}

@Override
public void onActivityStarted(Activity activity) {
}

@Override
public void onActivityResumed(Activity activity) {
}

@Override
public void onActivityPaused(Activity activity) {
}

@Override
public void onActivityStopped(Activity activity) {
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

}


});
}

public void exitApp() {

Log.d(TAG, "ÈÝÆ÷ÄÚµÄActivityÁбíÈçÏ ");
// ÏÈ´òÓ¡µ±Ç°ÈÝÆ÷ÄÚµÄActivityÁбí
for (Activity activity : activityLinkedList) {
Log.d(TAG, activity.getLocalClassName());
}

Log.d(TAG, "ÕýÖð²½Í˳öÈÝÆ÷ÄÚËùÓÐActivity");

// Öð¸öÍ˳öActivity
for (Activity activity : activityLinkedList) {
activity.finish();
}

// ½áÊø½ø³Ì
// System.exit(0);
}
}

// ¼ÇµÃÔÚManifest.xmlÖÐÌí¼Ó
<application
android:name=".Carson_BaseApplicaiton"
....
</application>

²½Öè2£ºÐèÒªÒ»¼üÍ˳ö App ʱ£¬»ñÈ¡¸Ã ApplicaitonÀà¶ÔÏó & µ÷ÓÃexitApp()

private Carson_BaseApplicaiton app;

app = (Carson_BaseApplicaiton)getApplication();
app.exitApp();

Ч¹ûͼ

1.Óŵã

Ó¦Óó¡¾°¹ã·º£º¼æ¹Ëµ¥ / ¶àÈÎÎñÕ» & ¶àÆô¶¯Ä£Ê½µÄÇé¿ö

2.ȱµã

ÐèÒª Activity ¾­ÀúÕý³£µÄÉúÃüÖÜÆÚ£¬¼´´´½¨Ê±µ÷ÓÃonCreate£¨£©£¬½áÊøÊ±µ÷ÓÃonDestroy£¨£©

ÒòΪֻÓÐÕâÑù¾­ÀúÕý³£µÄÉúÃüÖÜÆÚ²ÅÄܽ« ActivityÕýȷдÈë & д³ö ÈÝÆ÷ÄÚ

3.Ó¦Óó¡¾°

ÈÎÒâÇé¿öϵÄÒ»¼üÍ˳ö App ʵÏÖ

·½·¨2£ºRxBus

Ô­Àí£ºÊ¹Óà RxBusµ±×÷ʼþ×ÜÏߣ¬ÔÚÿ¸ö ActivityÀï×¢²áRxBus¶©ÔÄ£¨ÏìÓ¦¶¯×÷ = ¹Ø±Õ×ÔÉí£©£»µ±ÐèÒªÍ˳öAppʱ ·¢ËÍÍ˳öʼþÇëÇó¼´¿É¡£

¾ßÌåʹÓÃ

²½Öè1£ºÔÚÿ¸ö ActivityÀï×¢²áRxBus¶©ÔÄ£¨ÏìÓ¦¶¯×÷ = ¹Ø±Õ×ÔÉí£©

public class Activity extends AppCompatActivity {
private Disposable disposable;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);

// ×¢²áRxBus¶©ÔÄ
disposable = RxBus.getInstance().toObservable(String.class)
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
// ÏìÓ¦¶¯×÷ = ¹Ø±Õ×ÔÉí
if (s.equals("exit")){
finish();
}
}
});
}

// ×¢ÒâÒ»¶¨ÒªÈ¡Ïû¶©ÔÄ
@Override
protected void onDestroy() {
if (!disposable.isDisposed()){
disposable.dispose();;
}
}

²½Öè2£ºµ±ÐèÒªÍ˳öAppʱ ·¢ËÍÍ˳öʼþ


RxBus.getInstance().post("exit");
System.exit(0);

1.Óŵã

¿ÉÓë RxJava & RxBus Ïà½áºÏ

2.ȱµã

ʵÏÖ¸´ÔÓ£ºRxBus ±¾ÉíµÄʵÏÖÄÑ¶È & ÐèÒªÔÚÿ¸öActivity×¢²áºÍÈ¡Ïû¶©ÔÄ RxBus ʹÓÃ

3.Ó¦Óó¡¾°

ÐèÒªÓëRxJava ½áºÏʹÓÃʱ

ÈôÏîÄ¿ÖÐûÓÐÓõ½RxJava & RxBus ²»½¨ÒéʹÓÃ

ÖÁ´Ë£¬Ò»¼ü½áÊøµ±Ç° AppµÄËùÓÐ ActivityµÄ ·½·¨ ½²½âÍê±Ï¡£

×¢£ºÉÏÊö·½·¨½ö½öÖ»ÊǽáÊøµ±Ç°AppËùÓеÄActivity £¨ÔÚÓû§µÄ½Ç¶ÈȷʵÊÇÍ˳öÁË App£©£¬µ«Êµ¼ÊÉϸÃAppµÄ½ø³Ì»¹Î´½áÊø

£¨²½Öè2£©Ò»¼ü½áÊøµ±Ç° App ½ø³Ì

Ö÷Òª²ÉÓà Dalvik VM±¾µØ·½·¨

×÷ÓÃ

½áÊøµ±Ç° Activity & ½áÊø½ø³Ì

¼´ ÔÚ £¨²½Öè1£©½áÊøµ±Ç° App ËùÓÐµÄ Activity ºó£¬µ÷Óø÷½·¨¼´¿ÉÒ»¼üÍ˳ö App£¨¸ü¶àÌåÏÖÔÚ½áÊø½ø³ÌÉÏ£©

¾ßÌåʹÓÃ

// ·½Ê½1£ºandroid.os.Process.killProcess£¨£©
android.os.Process.killProcess(android.os.

Process.myPid()) £»

// ·½Ê½2£ºSystem.exit()
// System.exit() = JavaÖнáÊø½ø³ÌµÄ·½·¨£º

¹Ø±Õµ±Ç°JVMÐéÄâ»ú
System.exit(0);

// System.exit(0)ºÍSystem.exit(1)µÄÇø±ð
// 1. System.exit(0)£ºÕý³£Í˳ö£»
// 2. System.exit(1)£º·ÇÕý³£Í˳ö£¬Í¨³£ÕâÖÖÍ˳ö·½Ê½

Ó¦¸Ã·ÅÔÚcatch¿éÖС£

ÌØ±ð×¢Òâ

¼ÙÉ賡¾°£ºµ±Ç° Activity ¡Ù µ±Ç°ÈÎÎñÕ»×îºó1¸öActivityʱ£¬µ÷ÓÃÉÏÊöÁ½¸ö·½·¨»á³öÏÖʲôÇé¿öÄØ£¿£¨¼´Activity1 - Activity2 -Activity3£¨ÔÚActivity3µ÷ÓÃÉÏÊöÁ½¸ö·½·¨£©£©

´ð£º

1. ½áÊøActivity3£¨µ±Ç° Activity £©& ½áÊø½ø³Ì

2. ÔÙ´ÎÖØÐ¿ªÆô½ø³Ì & Æô¶¯ Activity1 ¡¢ Activity2

¼´ÔÚAndroid ÖУ¬µ÷ÓÃÉÏÊöDalvik VM±¾µØ·½·¨½á¹ûÊÇ£º

1. ½áÊøµ±Ç° Activity & ½áÊø½ø³Ì

2. Ö®ºóÔÙÖØÐ¿ªÆô½ø³Ì & Æô¶¯ ֮ǰ³ýµ±Ç° Activity ÍâµÄÒÑÆô¶¯µÄ Activity

Ô­Òò£º* AndroidÖеÄActivityManagerʱ¿Ì¼àÌý׎ø³Ì*¡£Ò»µ©·¢ÏÖ½ø³Ì±»·ÇÕý³£½áÊø£¬Ëü½«»áÊÔÍ¼È¥ÖØÆôÕâ¸ö½ø³Ì¡£

Ó¦Óó¡¾°

µ±ÈÎÎñջֻʣϵ±Ç°Activity£¨¼´Í˳öÁËÆäÓà Activityºó£©£¬µ÷Óü´¿ÉÍ˳ö¸Ã½ø³Ì£¬¼´ÔÚ£¨²½Öè1£©½áÊøµ±Ç° App ËùÓÐµÄ Activity ºó£¬µ÷Óø÷½·¨¼´¿ÉÒ»¼üÍ˳öApp£¨¸ü¶àÌåÏÖÔÚ½áÊø½ø³ÌÉÏ£©

×¢£º Óë ¡°ÔÚ×îºóÒ»¸öActivityµ÷Óà finish£¨£©¡±µÄÇø±ð£ºfinish£¨£©²»»á½áÊø½ø³Ì£¬¶øÉÏÊöÁ½¸ö·½·¨»á

ÖÁ´Ë£¬¹ØÓÚ Ò»¼üÍ˳öApp µÄÁ½¸ö²½Öè½²½âÍê±Ï¡£

DemoµØÖ·

¹ØÓÚÉÏÊö˵µÄ·½·¨DemoµÄGithubµØÖ·£ºhttps://github.com/Carson-Ho/App_1shot_Finsh

×ܽá

ÔÚ ÐèҪʵÏÖ Ò»¼üÍ˳ö App ¹¦ÄÜʱ£¬Êµ¼ÊÉÏÊÇÐèÒªÍê³É2¸ö²½Ö裺

²½Öè1£ºÒ»¼ü½áÊøµ±Ç°AppËùÓеÄActivity

²½Öè2£ºÒ»¼ü½áÊøµ±Ç°App½ø³Ì

ÿ¸ö²½ÖèµÄ·½·¨×ܽáÈçÏÂ

   
2247 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì