在我的应用中,我有两个意图。首先,我将图像作为图库和相机的输入。然后,我将uri发送到下一个活动。我将uri转换为位图并在位图上应用了一些效果。该活动包含两个片段。我在asynctask中进行过滤。应用程序首次运行良好。但是当我回到我的第一个活动并转到下一个活动时,它的执行速度就会变慢。
在MainActivity中,我使用了这段代码
Intent intent = new Intent(getApplicationContext(),EditorPage.class);
intent.putExtra("imageUri", cropUri.toString());
startActivity(intent);
finish();
在EditorActivity中,我将此代码用于后退按钮
startActivity(new Intent(getApplicationContext(),MainActivity.class));
finish();
在进入EditorActivity之前,我正在使用第三方库来裁剪图像。请帮我。谢谢
答案 0 :(得分:0)
裁剪图像是一个好的开始。
但是我认为加载的位图可能仍然会降低您的应用性能。
我建议您使用Glide
加载位图。
滑行为An image loading and caching library for Android focused on smooth scrolling
https://github.com/bumptech/glide
答案 1 :(得分:0)
请尝试不要按照以下步骤关闭您的MainActivity
Intent intent = new Intent(getApplicationContext(),EditorPage.class);
intent.putExtra("imageUri", cropUri.toString());
startActivity(intent);
//finish(); <--- remove this line
只需致电onBackPressed()
,然后按以下方式致电startActivity()
//remove this bellow line
//startActivity(new Intent(getApplicationContext(),MainActivity.class));
finish();
答案 2 :(得分:0)
如果您的活动层次结构为First
-> Second
,则从头开始打开Second
不应调用finish()
或onBackPressed()
。
导航First
-> Second
Intent intent = new Intent(getApplicationContext(),EditorPage.class);
intent.putExtra("imageUri", cropUri.toString());
startActivity(intent);
然后从Second
返回到First
,调用finish()
,前提是Second
由First
而不是其他方式启动。确保在调用Second
finish()
中的所有资源
如果Second
并非总是由First
开始,则您需要采取一些额外的步骤:
在清单中添加First
作为Second
的父项
<activity
android:name="...Second"
android:allowTaskReparenting="true"
android:parentActivityName="...First"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="...First" />
</activity>
调用类似这样的函数:
public final void navigateUp() {
Intent upIntent = NavUtils.getParentActivityIntent(this);
if (upIntent == null) {
onBackPressed();
} if (NavUtils.shouldUpRecreateTask(this, upIntent) || isTaskRoot()) {
TaskStackBuilder.create(this).addNextIntentWithParentStack(upIntent).startActivities();
} else {
upIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
NavUtils.navigateUpTo(this, upIntent);
}
}