티스토리 뷰

반응형

// Logo.java

protected void onNewIntent(Intent intent)
{
     super.onNewIntent(intent);
     boolean isKill = intent.getBooleanExtra("KILL_ACT", false);
     
     if(isKill) close();
}
 
private void close()
{
     finish();
     int nSDKVersion = Integer.parseInt(Build.VERSION.SDK);
     if(nSDKVersion < 8)    //2.1이하
     {
           ActivityManager actMng = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
           actMng.restartPackage(getPackageName());
     }
     else
     {
            new Thread(new Runnable() {
                 public void run() {
                      ActivityManager actMng = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
                      String strProcessName = getApplicationInfo().processName;
                      while(true)
                      {
                           List<RunningAppProcessInfo> list = actMng.getRunningAppProcesses();
                           for(RunningAppProcessInfo rap : list)
                           {
                                if(rap.processName.equals(strProcessName))
                              {
                                   if(rap.importance >= RunningAppProcessInfo.IMPORTANCE_BACKGROUND)
                                        actMng.restartPackage(getPackageName());
                                   Thread.yield();
                                   break;
                              }
                         }
                    }
               }
          }, "Process Killer").start();
     }
}
 
 
// Main.java
// 뒤로 버튼 눌러 종료시
DialogInterface.OnClickListener mExitClick = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == DialogInterface.BUTTON1) {
close();
}
else 
return;
  }
};
 
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode){
     case KeyEvent.KEYCODE_BACK:
     new AlertDialog.Builder(MinPos.this)
     .setTitle("프로그램을 종료 하시겠습니까?")
     // .setIcon(R.drawable.stop)
     .setPositiveButton("종  료", mExitClick)
     .setNegativeButton("취  소", mExitClick)
     .show();
     break;
}
  
return super.onKeyDown(keyCode, event);
}
 
private void close()
{
     finish();
     Intent intent = new Intent(MinPos.this, Logo.class);
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
     intent.putExtra("KILL_ACT", true);
     startActivity(intent);
}
 
 
// manifest
<uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission> 
 
반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday