从图库应用程序内部共享图像时如何使用已经运行的应用程序?它总是在创建已经运行的应用程序的单独实例。我在whatsapp应用程序中观察到相同的问题。
是的,另一个用例是当您单击通知时。如果应用程序已经在后台,它将启动一个新实例。
使用 android:launchMode
<activity android:launchMode = ["standard" | "singleTop" | "singleTask" | "singleInstance"] ../>
所以"singleTop"
从docs使用:
如果活动的实例已经存在于当前任务的顶部,则系统通过调用其onNewIntent()方法将意图路由到该实例,而不是创建活动的新实例。该活动可以被实例化多次,每个实例可以属于不同的任务,并且一个任务可以具有多个实例(但前提是位于后堆栈顶部的活动不是该活动的现有实例)。
请阅读下面的博客文章
http://inthecheesefactory.com/blog/understand-android-activity-launchmode/en
https://www.mobomo.com/2011/06/android-understanding-activity-launchmode/
编辑:在OnResume之前,它将调用OnActivityResult。与选择的数据。
Intent intent = new Intent();
intent.setType("image/jpeg");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Image From Gallery"),
10000);
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Uri originalUri = null;
if (resultCode == Activity.RESULT_OK) {
if (requestCode == 10000) {
if (data.getData() != null) {
originalUri = data.getData();
//originaluri is your selected image path.
}}}
并在我们的应用中获取“意图过滤器操作”。
void onCreate (Bundle savedInstanceState) {
...
// Get intent, action and MIME type
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if ("text/plain".equals(type)) {
handleSendText(intent); // Handle text being sent
} else if (type.startsWith("image/")) {
handleSendImage(intent); // Handle single image being sent
}
}
http://developer.android.com/training/sharing/receive.html http://developer.android.com/training/basics/intents/filters.html
或者,如果您使用的是launchmode- singleTop。只需重写onNewIntent即可。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句