我想通过WindowManager自定义的组件中,通过Exit按钮,把对应的Activity关闭掉,发现不能直接用Activity的finish办法(传递Context,然后转化,再调用finish)。只好用这个办法:killBackgroundProcesses,但是发现无效。原来是因为不能直接关闭,而要先StopService()。
还有restartpackage()方法,只是封装了killBackgroundProcesses函数的,一样是要先stopService()才能奏效。
代码如下:
case R.id.btnFvExit:
<span style="white-space:pre"> </span>Log.e("FlowViewLayout", "Exit");
<span style="white-space:pre"> </span>Log.e(TAG, mContext.getPackageName());
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>Intent intent = new Intent(mContext, AudioDetectService.class);
<span style="white-space:pre"> </span>mContext.stopService(intent);
<span style="white-space:pre"> </span>ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
<span style="white-space:pre"> </span>am.killBackgroundProcesses("com.sanshin.btspp");
<span style="white-space:pre"> </span>//am.restartPackage("com.sanshin.btspp");
<span style="white-space:pre"> </span>//((BTSPPActivity)(mContext.getApplicationContext())).finish();
break;
记得增加权限:
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
<uses-permission android:name="android.Manifest.permission.KILL_BACKGROUND_PROCESSES"/>