应用安装请求后等待用户操作?

时间:2016-03-10 13:00:10

标签: android android-asynctask

我有一个后台服务,负责检查服务器的更新。

服务启动AsyncTask,负责实际检查和下载更新。

然后我发起了一个意图,要求用户安装或取消安装

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(newFile(SystemConstants.UPDATE_DOWNLOAD_PATH+fileName)),"application/vnd.android.packagearchive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);

Activity我会startActivityForResult,但由于service已启动请求,因此我很难确定如何等待用户响应。

我怎样才能在AsyncTask中等到用户选择了一个动作?

由于

2 个答案:

答案 0 :(得分:1)

  

我很难弄清楚如何等待用户回复

如果您需要反馈,那么您的服务不应直接触发此意图。相反,你应该拥有"中间人"在你的应用程序中,很可能是另一个活动,一旦服务告诉它这样做,它将触发该意图。由于这是常规活动,因此您可以使用startActivityForResult()

然而,我认为您应该阅读event bus concept(GreenRobot' s,OTTO,Guava' s),因为这可能对您的应用内通信有所帮助。

答案 1 :(得分:1)

首先,在后台开始下载对我来说似乎是一种不好的做法,除非它的大小非常小。应该让用户知道有升级并询问是否可以继续。

除此之外,我认为你应该使用NotificationPendingIntent。当用户点击您的通知时,您的待处理意图只会打开Activity,以启动您的startActivityForResult()

如果此检查是定期任务,请确保使用JobScheduler来优化电池使用情况,并避免操作系统终止您的服务。