《风波·莫听穿林打叶声》—— 苏轼 〔宋代〕
三月七日,沙湖道中遇雨,雨具先去,同行皆狼狈,余独不觉。已而遂晴,故作此词。
莫听穿林打叶声,何妨吟啸且徐行。
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
料峭春风吹酒醒,微冷,山头斜照却相迎。
回首向来萧瑟处,归去,也无风雨也无晴。
-
关于使用killBackgroundProcesses杀进程不生效的问题
-
stackoverflow 关于 killBackgroundProcesses no working的讨论
-
关于使用forceStopPackage()方法杀应用的讨论-1
-
关于使用forceStopPackage()方法杀应用的讨论-2
killBackgroundProcesses()
结论:我们可以killBackgroundProcesses(pkgName) 来杀掉后台应用。(PS: 如果是前台应用,则可以先将其放到后台,然后调用killBackgroundProcesses(pkgName)来杀掉应用)
killBackgroundProcesses(pkgName) 需要配置权限:
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
forceStopPackage()
结论:该方法不推荐使用。其有如下几个要点:
/**
* @see #forceStopPackageAsUser(String, int)
* @hide
*/
@SystemApi
@RequiresPermission(Manifest.permission.FORCE_STOP_PACKAGES)
public void forceStopPackage(String packageName) {
forceStopPackageAsUser(packageName, mContext.getUserId());
}
但是我们在源码中看到:
@hide
@UnsupportedAppUsage
public void forceStopPackageAsUser(String packageName, int userId) {
try {
getService().forceStopPackage(packageName, userId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
如果我们需要调用forceStopPackageAsUser(),首先需要获取userId.我们从forceStopPackage()方法中可以发现userid是从Context中获取的。
// Context.java
/**
* Get the user associated with this context
* @hide
*/
@UnsupportedAppUsage
@TestApi
public @UserIdInt int getUserId() {
return android.os.UserHandle.myUserId();
}
由于该方法是被 @hide 修饰的,意味着我们可以通过反射进行调用。
观察这几个方法,我们会发现几个注解:@hide , @SystemApi
关于这两者的区别:@SystemApi, @PrivateApi and @hide的区别