Java 确定哪个类称为IntentService

Java 确定哪个类称为IntentService,java,android,android-asynctask,Java,Android,Android Asynctask,我正在开发一个新闻应用程序。我有5类新闻栏目。检索本地数据时,每个选项卡或节调用不同的URL,并且在本地数据库中有一个单独的表,因此有一个不同的URI(使用ContentProvider) 我有一个AsyncTask为所有请求提供服务。它根据传递给它的类的实例确定要调用的url或uri。所有选项卡/节/片段/类都继承自一个公共基类 现在,我想将AsyncTask更改为IntentService,以便使用AlarmManager类。我注意到,似乎没有简单的方法通过意图传递对象 我需要一种方法来确定

我正在开发一个新闻应用程序。我有5类新闻栏目。检索本地数据时,每个选项卡或节调用不同的URL,并且在本地数据库中有一个单独的表,因此有一个不同的URI(使用ContentProvider)

我有一个AsyncTask为所有请求提供服务。它根据传递给它的类的实例确定要调用的url或uri。所有选项卡/节/片段/类都继承自一个公共基类

现在,我想将AsyncTask更改为IntentService,以便使用AlarmManager类。我注意到,似乎没有简单的方法通过意图传递对象

我需要一种方法来确定5个类中哪一个类被称为IntentService,以便采取适当的措施

在确定类的实例时调用该类:

public class GetURL {
public static URL GetURL(TabsSuperClass tabs)
{
    URL url = null;
    try {
        if(tabs instanceof CultureFrag)
        {
            final String baseUri = "http://content.guardianapis.com/search?";
            Uri uriBuilder = Uri.parse(baseUri)
                    .buildUpon()
                    .appendQueryParameter("section", "culture|local|music|books|society")
                    .appendQueryParameter("order-by", "newest")
                    .appendQueryParameter("use-date", "published")
                    .appendQueryParameter("show-fields", "trailText,thumbnail")
                    .appendQueryParameter("page", String.valueOf(TabsSuperClass.pageSize))
                    .appendQueryParameter("page-size", "10")
                    .appendQueryParameter("api-key", "Test-Key")
                    .build();
            url = new URL(uriBuilder.toString());

        }
        else if(tabs instanceof LifeStyleFrag)
        {
            final String baseUri = "http://content.guardianapis.com/search?";
            Uri uriBuilder = Uri.parse(baseUri)
                    .buildUpon()
                    .appendQueryParameter("section", "lifeandstyle|education|fashion|help")
                    .appendQueryParameter("order-by", "newest")
                    .appendQueryParameter("use-date", "published")
                    .appendQueryParameter("show-fields", "trailText,thumbnail")
                    .appendQueryParameter("page", String.valueOf(LifeStyleFrag.pageSize))
                    .appendQueryParameter("page-size", "10")
                    .appendQueryParameter("api-key", "Test-Key")
                    .build();
            url = new URL(uriBuilder.toString());
        }
        else if(tabs instanceof ScienceFrag)
        {
            final String baseUri = "http://content.guardianapis.com/search?";
            Uri uriBuilder = Uri.parse(baseUri)
                    .buildUpon()
                    .appendQueryParameter("section", "science|environment|technology|business")
                    .appendQueryParameter("order-by", "newest")
                    .appendQueryParameter("use-date", "published")
                    .appendQueryParameter("show-fields", "trailText,thumbnail")
                    .appendQueryParameter("page", String.valueOf(ScienceFrag.pageSize))
                    .appendQueryParameter("page-size", "10")
                    .appendQueryParameter("api-key", "Test-Key")
                    .build();
            url = new URL(uriBuilder.toString());
        }
        else if(tabs instanceof SportFrag)
        {
            final String baseUri = "http://content.guardianapis.com/search?";
            Uri uriBuilder = Uri.parse(baseUri)
                    .buildUpon()
                    .appendQueryParameter("section", "sport|football")
                    .appendQueryParameter("order-by", "newest")
                    .appendQueryParameter("use-date", "published")
                    .appendQueryParameter("show-fields", "trailText,thumbnail")
                    .appendQueryParameter("page", String.valueOf(SportFrag.pageSize))
                    .appendQueryParameter("page-size", "10")
                    .appendQueryParameter("api-key", "Test-Key")
                    .build();
            url = new URL(uriBuilder.toString());
        }
        else if(tabs instanceof WorldFrag)
        {
            final String baseUri = "http://content.guardianapis.com/search?";
            Uri uriBuilder = Uri.parse(baseUri)
                    .buildUpon()
                    .appendQueryParameter("section", "world|opinion|media|us-news|australia-news|uk-news")
                    .appendQueryParameter("order-by", "newest")
                    .appendQueryParameter("use-date", "published")
                    .appendQueryParameter("show-fields", "trailText,thumbnail")
                    .appendQueryParameter("page", String.valueOf(WorldFrag.pageSize))
                    .appendQueryParameter("page-size", "10")
                    .appendQueryParameter("api-key", "Test-Key")
                    .build();
            url = new URL(uriBuilder.toString());
        }
    }
    catch (MalformedURLException e)
    {
        e.printStackTrace();
    }

    return url;
}

public static Uri GetContentUri(TabsSuperClass tabs)
{
    Uri uri = null;

    if(tabs instanceof CultureFrag)
    {
        return NewsContract.CONTENT_URI_CULTURE;
    }
    else if(tabs instanceof LifeStyleFrag)
    {
        return NewsContract.CONTENT_URI_LIFESTYLE;
    }
    else if(tabs instanceof ScienceFrag)
    {
        return NewsContract.CONTENT_URI_SCIENCE;
    }
    else if(tabs instanceof SportFrag)
    {
        return NewsContract.CONTENT_URI_SPORT;
    }
    else if(tabs instanceof WorldFrag)
    {
        return NewsContract.CONTENT_URI_WORLD;
    }

    return uri;
}
}

当我将数据插入调用该类的类的表时,调用该类的实例就在这里

private void InsertIntoTable(List<NewsFacade> data) {
    for (NewsFacade facade :
            data) {
        ContentValues values = new ContentValues();
        values.put(NewsContract.DataContract.COLUMN_NAME_DATE, facade.getDate());
        values.put(NewsContract.DataContract.COLUMN_NAME_CONTENT, facade.getText());
        values.put(NewsContract.DataContract.COLUMN_NAME_TAG, facade.getTag());
        byte[] image = EncodeImage(facade.getThumb());
        values.put(NewsContract.DataContract.COLUMN_NAME_THUMB, image);
        values.put(NewsContract.DataContract.COLUMN_NAME_TITLE, facade.getTitle());
        values.put(NewsContract.DataContract.COLUMN_NAME_WEBADDRESS, facade.getWebAddress());
        _fragment.mResolver.insert(GetURL.GetContentUri(_fragment), values);
    }
}
private void InsertIntoTable(列表数据){
对于(新立面:
(数据){
ContentValues=新的ContentValues();
value.put(NewsContract.DataContract.COLUMN_NAME_DATE,facade.getDate());
value.put(NewsContract.DataContract.COLUMN_NAME_CONTENT,facade.getText());
value.put(NewsContract.DataContract.COLUMN_NAME_标记,facade.getTag());
字节[]image=EncodeImage(facade.getThumb());
value.put(NewsContract.DataContract.COLUMN\u NAME\u THUMB,image);
value.put(NewsContract.DataContract.COLUMN_NAME_TITLE,facade.getTitle());
value.put(NewsContract.DataContract.COLUMN_NAME_WEBADDRESS,facade.getWebAddress());
_fragment.mResolver.insert(GetURL.GetContentUri(_fragment),值);
}
}
我需要一种方法来确定5个类中哪一个类被称为IntentService,以便采取适当的措施


在传递给
startActivity()
Intent
上添加一个额外内容,指示
IntentService
应该做什么。您可以在
IntentService
中的
onHandleIntent()
中获得该
Intent
的副本,因此您可以检索额外的内容并根据其值采取适当的步骤。

在我添加的活动顶部:-

private final static String THIS_ACTIVITY = "AddProductToShopActivity";
为此,我补充:

intent.putExtra("CALLER", THIS_ACTIVITY);
在已启动的活动中:-

final String caller = getIntent().getStringExtra("Caller");

谢谢你的回复。这是一个好办法。然而,我需要一个活动的推荐人。比如它的ContentResolver,以及它的一些布尔变量的状态。谢谢你的回复。这是一个好办法。然而,我需要一个活动的推荐人。例如它的ContentResolver,以及它的一些布尔变量的状态。这是关于发送对象的文章之一。我确实开始这样做了,但由于类不可序列化而遇到问题,所以采取了另一种方法(onResume适合我的情况)。@ClintonYeboah:“但是,我需要一个活动的参考”——这不是一个合适的选择。“喜欢它的ContentResolver”--您的
IntentService
完全能够通过调用
getContentResolver()
获得自己的
ContentResolver
。“和它的一些布尔变量的状态”——也将它们作为额外变量传递。
final String caller = getIntent().getStringExtra("Caller");