1

我有一个更新例程(连接到服务器并查找自身的更新版本),它在我的第一个活动上运行 onCreate。如果有更新,则会向用户显示一个对话框,如果更新不是强制性的,询问他们是否要下载更新。

问题是我不想在活动中运行它,因为每次重新加载活动时都会调用它,比如旋转设备时。

我可以创建一个单例,它知道检查是否已经执行或类似的事情,但更愿意在活动之外进行检查,因为它似乎不是正确的地方。

我遇到的问题是,如果我把它放在 android.app.application 中,那么我没有创建对话框的活动。我可以为此创建一个加载器活动,然后触发主要活动,但这似乎也不理想。

处理这种情况的好方法是什么?

4

2 回答 2

2

您不能从应用程序上下文启动活动,遗憾的是这是不可能的。您需要做的是创建一个活动

android:theme="@android:style/Theme.Dialog"

在您的 AndroidManifest.xml 的活动标签中。在这个活动中,您应该定义一个相当简单的布局,使其看起来尽可能像一个对话框(或者如果您希望它看起来像其他东西,则不要)。

另一种选择是让您的第一个活动设置广播接收器,然后让应用程序上下文

sendBroadcast(new Intent("MyUniqueID"));

在 BroadcastReceiver 的 onReceive 方法中显示带有 Activity 上下文的对话框。

于 2013-02-09T03:33:06.440 回答
0

crdnilfan 给出了很好的答案。如果您想在 MainActivity 中执行此操作,那么您可以按照此处所述的正确方式维护 Activity Lifecycle ,如果您想onCreate()在旋转设备时限制调用,您可以指定 configChanges,

        <activity
        android:name="com.example.temp.MainActivity"
        android:configChanges="orientation"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我希望它会有所帮助!

于 2013-02-09T05:35:10.397 回答