gpt4 book ai didi

android - 在 "fluid way"中使用共享 Intent

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:47 24 4
gpt4 key购买 nike

背景

很多时候,我们希望允许用户在安卓应用上分享一些东西。

这可以使用下一个函数来完成:

public static Intent prepareSharingIntent() {
final List<Intent> targetedShareIntents = new ArrayList<Intent>();
final Intent shareIntent = new Intent(Intent.ACTION_SEND);
final Intent smsIntent = new Intent(Intent.ACTION_VIEW);
targetedShareIntents.add(smsIntent);
shareIntent.setType("text/plain");
smsIntent.setType("vnd.android-dir/mms-sms");
final String invitationMessage = "check out my App!";
smsIntent.putExtra(Intent.EXTRA_TEXT, invitationMessage);
shareIntent.putExtra(Intent.EXTRA_TEXT, invitationMessage);
shareIntent.putExtra("sms_body", invitationMessage);
smsIntent.putExtra("sms_body", invitationMessage);
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Check out this app!");
smsIntent.putExtra(Intent.EXTRA_SUBJECT, "Check out this app!");
shareIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[] {}));
final Intent chooserIntent = Intent.createChooser(shareIntent, "Share using...");
chooserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY
| Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
return chooserIntent;
}

问题

有些用户(比如我)有很多可以处理共享 Intent 的应用程序。

这意味着有时从我点击分享内容到显示对话框会有很长的延迟(在某些情况下可能是一秒甚至更多),所以这是一种非常不受欢迎的行为。

我有耐心,但也许有些用户会因此认为该应用程序“滞后”。

事实上,我注意到这个问题出现在许多应用程序(包括 Play 商店应用程序)上。用户没有收到设备当前正在执行某些操作来显示对话框的反馈。

问题

可以做些什么来让它看起来更流畅,或者至少显示一些进度对话框直到显示真正的对话框?

最佳答案

如何:您将 prepareSharingIntent() 代码放在 AsyncTask 中,并在应用程序启动时启动该任务。然后,您可以保存对“chooserIntent”的全局引用(例如,在 Application 类中),并在引用不为 null 且用户单击共享按钮时显示它。

确保以低优先级运行它,以免减慢应用程序的启动速度:

private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
chooserIntent = prepareSharingIntent();
return "Executed";
}

@Override
protected void onPostExecute(String result) { }

@Override
protected void onPreExecute() { }

@Override
protected void onProgressUpdate(Void... values) { }
}

关于android - 在 "fluid way"中使用共享 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18183576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com