我知道这 implements Runnable比extends Thread Java线程更受欢迎,因为它允许我们在需要时扩展其他类.但如果是这样的话,它extends Thread也有自己的优势implements Runnable,如果是的话,这些优势是什么?
在我的应用程序中,我想根据收到的通知更改应用程序的图标.即,如果收到2个通知,则其中具有"2"的app图标将显示在设备的主屏幕中.
为此,我使用了活动别名.我为活动别名添加了以下intent过滤器:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
为了使活动别名处于活动状态,我使用了以下代码:
这是为了启用活动别名:
ComponentName componentName = new ComponentName("PACKAGE_NAME_HERE",
lastEnabled);
pm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Utility.setLastEnabled(lastEnabled,context);
Run Code Online (Sandbox Code Playgroud)
这将禁用以前启用的活动别名
componentName = new ComponentName(
"PACKAGE_NAME_HERE", prevLastEnabled);
pm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)
但是,只要应用程序图标发生变化,我的应用就会毫无例外地关闭.我在这里使用过不要杀app,仍然会关闭应用程序.如果我做错了什么,有人可以建议我.谢谢.
我使用以下代码从图库中选择图片或视频:
imgGallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent pickPhoto = new Intent(Intent.ACTION_GET_CONTENT);
pickPhoto.setType("*/*");
String[] mimetypes = {"image/*", "video/*"};
pickPhoto.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
startActivityForResult(pickPhoto,
SELECT_PICTURE_OR_VIDEO);
}
});
Run Code Online (Sandbox Code Playgroud)
请注意我使用相同的按钮进行图像或视频选择.因此,当调用onActivityResult时,有什么方法可以让我知道选择了图像或从图库中选择了视频?