android 종료 여러 activity 응용 프로그램

4218 단어
여기에 두 가지 방법을 소개한다. 하나는 각각의 activity를 기억하고 하나씩 없애는 것이다.또 다른 사고방식은 방송을 사용하는 것이다.
이 글은 자신을 위해 정리하는 방법과 인터넷에서 찾은 방법이 결합되어 있다...끄는 방법이 있을 거라고 믿어요...
1..모든 Activity를 중지하는 방법
       ActivityManageractivityMgr = (ActivityManager) OneActivity.this.getSystemService(ACTIVITY_SERVICE);
 
       activityMgr.restartPackage(getPackageName());

2.android.os.Process.killProcess(android.os.Process.myPid()//PID 가져오기
 
3. 작업 관리자 방법
먼저 Android 1.5 APILEvel 이 3 이상이어야 하며 권한이 필요합니다.
  ActivityManager am= (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
시스템은 이 가방 아래의 모든 프로세스, 서비스, 모든 것을 죽이면 깨끗하게 죽일 수 있으니 주의해야 한다.
방법 1,list로 activity 실례를 저장하고 코드를 하나씩 제거한다.
import java.util.LinkedList; 
import java.util.List; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Application; 
import android.content.DialogInterface; 
import android.content.Intent; 

public class SysApplication extends Application { 
    private List<Activity> mList = new LinkedList<Activity>(); 
    private static SysApplication instance; 

    private SysApplication() {   
    } 

    public synchronized static SysApplication getInstance() { 
        if (null == instance) { 
            instance = new SysApplication(); 
        } 
        return instance; 
    } 

    // add Activity  
    public void addActivity(Activity activity) { 
        mList.add(activity); 
    } 

    public void exit() { 
        try { 
            for (Activity activity : mList) { 
                if (activity != null) 
                    activity.finish(); 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } finally { 
            System.exit(0); 
        } 
    } 

    @Override 
    public void onLowMemory() { 
        super.onLowMemory();     
        System.gc(); 
    } 

} 

각 Activity의 onCreate 메서드에 유사한 코드를 추가합니다.
[java] public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);      
    SysApplication.getInstance().addActivity(this); 
} 
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);  
  SysApplication.getInstance().addActivity(this);
}

프로그램을 종료해야 할 때 호출:
SysApplication.getInstance().exit(); 
SysApplication.getInstance().exit();
간단히 말해서, 단일 모드를 통해 모든Activity의 인용을 전역 체인 테이블에 추가하고, 프로그램을 종료할 때마다 System을 호출합니다.exit(0) 시 체인 테이블에서Activity의finish 방법을 호출합니다
참고: 이 메서드는 링크도 참조할 수 있습니다.http://maosidiaoxian.iteye.com/blog/1404725
방법 2. 방송 사용
2.2 전체 응용 프로그램을 종료하는 것은 곤란하다. 한때는 Activity Manager 관리자 = (Activity Manager) context를 시도했다.getSystemService(Context.ACTIVITY_SERVICE);  manager.killBackgroundProcesses(package);안돼android.os.Process.killProcess(android.os.Process.myPid());안 돼요, 관리자.restartPackage(package);아니면 Intent My Intent = new Intent(Int.ACTION MAIN);  MyIntent.addCategory(Intent.CATEGORY_HOME);  startActivity(MyIntent);  finish();이것은 데스크톱으로 되돌아갈 뿐입니다. 만약에 여러 개의Activity를 켜서 다시 켜도 문제가 있을 수 있습니다. 아니면 안 될 수도 있습니다. 유설 방송 메커니즘을 보면 좋은 문제입니다. 이 문제를 철저히 해결할 수 있습니다. 쓸데없는 말은 하지 말고 코드를 보십시오.
public abstract class EnterActivity extends BaseActivity {
...
    //          ,      ,  activity
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            unregisterReceiver(this); //             ,       ,     
            ((Activity) context).finish();
        }
    };

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

        //     activity     
        IntentFilter filter = new IntentFilter();
        filter.addAction(Attribute.PAGENAME);
        registerReceiver(this.broadcastReceiver, filter); //   
    }

    /**
     *   
     */
    public void close() {
        Intent intent = new Intent();
        intent.setAction(Attribute.PAGENAME); //     
        sendBroadcast(intent);//          
        finish();
    }
...
}

좋은 웹페이지 즐겨찾기