登录应用程序的概念

时间:2012-07-18 13:45:10

标签: android

假设我有4项活动:LoginSyncMainDetails

只有在用户登录并通过同步阶段时,才能访问

MainDetails。可以从抽屉上的图标访问Main。可以从Details和通知中访问Main

用户在不活动30分钟后退出(使用服务上的计时器)。

我不确定应采取哪种方式来确保用户已登录。以下是我的两种情况:

  • 图标启动Login,用于检查用户是否已登录,然后启动Synch,同时启动Main
  • 图标启动Main,检查用户是否已登录,如果没有,则启动LoginLogin自行关闭,以显示位于后台的Main

然后还有Details需要检查用户是否已登录。

第二种情况对我来说似乎更正确,因为它允许启动除Main之外的其他活动,但它会强制我复制每个需要用户登录的Activity中的检查代码。(I有两个以上的活动。)

为什么我应该采取什么方式?为什么呢?

1 个答案:

答案 0 :(得分:2)

您可以扩展实现所有检查代码的BaseActivity,然后您使用的任何新Activity都会内置它。

我在一个可以访问50%活动的应用程序中使用它而无需登录,并使用startActivityForResult(...)显示提示,以捕获登录尝试的成功或失败。

它工作得非常好并且整齐地封装了所有内容:)

修改

以下是可根据需要修改的代码段:

/**
 * This is an abstract class that all Activities will be based on.
 */
public abstract class BaseActivity extends ActionBarActivity
{
    protected static final int    SHOW_WALLET       = 100;
    protected static final int    SHOW_OFFER_DETAIL = 101;
    protected static final int    REGISTER          = 102;
    protected static final int    SHOW_ACCOUNT      = 103;

    protected static final int    LOGGED_IN_OK      = 103;
    protected static final int    REGISTERED_OK     = 104;

    protected static final int    DIALOG_DELAY      = 300;
    // for passing data in extras
    protected static final String TEXT_SEARCH       = "text_search";
    protected static final String SEARCH_TERM       = "search_term";

    protected boolean             mAlternateTitle   = false;
    private Dialog                loading;
    private Runnable              showDialog;   

         protected final void openAccount()
        {
            Intent i;
            if ( LoginManager.getInstance().isLoggedIn() )
            {
                i = new Intent( this, MyAccountActivity.class );
                startActivity( i );
            }
            else
            {
                i = new Intent( this, LoginActivity.class );
                startActivityForResult( i, SHOW_ACCOUNT );
            }
        }

}