public class RegisterService extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(Constants.TAG, "intent.getAction()->" + intent.getAction());
this.context = context;
if (GlobalApplication.sdkVersion < 8)
{
PushService.actionStart(context);
}else{
close();
}
}
}
클래스로 리시버를 만들고 액션이 있을 때 동작 시키는 건데 . 8이하에서는 동작 . 8이상 에서는 해당 리시버를 finish();
시키고 싶은데 바로 finish()를 호출해서 쓸수 잇는 지 궁금 합니다 ..
이 리시버 때문에 어플이 계속 살아 잇는 걸로 보여서요 .. ^^;;
close(); 메소드를 만들어서 죽긴 죽는 데 더 좋은 방법이 있나 해서 문의 드립니다 .
private void close()
{
Log.d(Constants.TAG,"close");
int nSDKVersion = Integer.parseInt(Build.VERSION.SDK);
if(nSDKVersion < 8) //2.1이하
{
ActivityManager actMng = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
actMng.restartPackage(context.getPackageName());
}
else
{
new Thread(new Runnable() {
public void run() {
ActivityManager actMng = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
String strProcessName = context.getApplicationInfo().processName;
Log.d(Constants.TAG,"strProcessName=="+strProcessName);
while(true)
{
List<RunningAppProcessInfo> list = actMng.getRunningAppProcesses();
for(RunningAppProcessInfo rap : list)
{
if(rap.processName.equals(strProcessName))
{
if(rap.importance >= RunningAppProcessInfo.IMPORTANCE_BACKGROUND)
Log.d(Constants.TAG,"getPackageName()=="+context.getPackageName());
actMng.restartPackage(context.getPackageName());
Thread.yield();
break;
}
}
}
}
}, "Process Killer").start();
}
}