首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android -如何让活动加载更快?

Android -如何让活动加载更快?
EN

Stack Overflow用户
提问于 2011-05-26 09:22:32
回答 1查看 5.7K关注 0票数 1

我目前在一个短信应用程序上工作,这将非常类似于股票短信应用程序。

但问题是,我的应用程序的加载速度比股票(内置)应用程序慢得多。

以下是我的应用程序代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class ThreadData extends ListActivity
{
private static final Uri SMS_URI = Uri.parse("content://sms");
ArrayList<String> bodies = new ArrayList<String>();
MySMSAdapter adapter;
String name;

public void onCreate(Bundle bundle)
{
    super.onCreate(bundle);
    setContentView(R.layout.threadlist);
    Bundle extras = getIntent().getExtras();
    if(extras != null)
    {
        name = extras.getString("address");
    }
    Cursor cursor = getContentResolver().query(SMS_URI, null, null, null, "date ASC");
    startManagingCursor(cursor);
    while (cursor.moveToNext())
    {
        String Id = cursor.getString(cursor.getColumnIndex("_id"));
        String address = cursor.getString(cursor.getColumnIndex("address"));
        String body = cursor.getString(cursor.getColumnIndexOrThrow("body"));
        String personName = getPersonName(Id,  address);
        if(personName.equals(name))
        {
            bodies.add(body);
        }
    }
    //adapter = new MySMSAdapter(this, bodies);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.sms_inbox, R.id.row, bodies);
    ListView listView = getListView();
    listView.setAdapter(adapter);
}
public String getPersonName(String id, String address)
{
        if(id==null)
        {
            if(address != null)
            {
                return PhoneNumberUtils.formatNumber(address);
            }
            else
            {
                return null;
            }
        }

        Cursor c = this.getContentResolver().query(Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, address),
                   new String[] { ContactsContract.PhoneLookup.DISPLAY_NAME }, null, null, null);

        if(c != null)
        {
            try
            {
                if(c.getCount() > 0)
                {
                    c.moveToFirst();
                    return c.getString(0);
                }
            }
            finally
            {
                c.close();
            }
        }
        if(address != null)
        {
            return PhoneNumberUtils.formatNumber(address);
        }
        return null;
}

}

我的自定义适配器:-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MySMSAdapter extends BaseAdapter
{
private Activity activity;
private ArrayList<String> data;
LayoutInflater inflater;

public MySMSAdapter(Activity a, ArrayList<String> arrayList)
{
    activity = a;
    data = arrayList;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public int getCount()
{
    return data.size();  //To change body of implemented methods use File | Settings | File Templates.
}

public Object getItem(int i)
{
    return data.get(i);  //To change body of implemented methods use File | Settings | File Templates.
}

public long getItemId(int i)
{
    return i;
}

public static class ViewHolder
{
    public TextView textView;
}

public View getView(final int i, View view, ViewGroup viewGroup)
{
    View row = view;
    final ViewHolder holder;
    if(view==null)
    {
        row = inflater.inflate(R.layout.sms_inbox, viewGroup, false);
        holder = new ViewHolder();
        holder.textView = (TextView)row.findViewById(R.id.row);
        row.setTag(holder);
    }
    else
    {
        holder = (ViewHolder)row.getTag();
    }

    holder.textView.setText(data.get(i));
    return row;
}
}

在我的类中,我尝试使用这两个选项(自定义适配器和ArrayAdapter)加载列表,但在这两种情况下,我的应用程序加载都非常慢。如何更快地加载它?我可能更喜欢我的自定义适配器的解决方案,因为将来我可能需要在布局中添加一些东西,比如照片和其他东西。

谢谢。请帮帮我!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-26 09:30:24

可以使用http://developer.android.com/guide/developing/tools/traceview.html探查器来本地化性能问题。我猜问题在于您正在执行磁盘操作(Cursor cursor = getContentResolver().query(...))同步的。尝试使用AssyncTask进行此异步,即

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6136322

复制
相关文章
Kafka消费者组
消费者组是 Kafka 独有的概念,消费者组是 Kafka 提供的可扩展且具有容错性的消费者机制。
程序员酷森
2020/10/18
1.9K0
Kafka消费者组是什么?
Consumer Group 是Kafka提供的可扩展且具有容错性的消费者机制。在组内多个消费者实例(Consumer Instance ),它们共享一个公共的ID即 Group ID 。组内的所有消费者协调在一起消费订阅主题(Subscribed Topics)的所有分区(Partition)。当然一个分区只能有同一个消费者组的一个Consumer 实例消费。 Consumer Group 有三个特性:
chengcheng222e
2021/11/04
4.7K0
kafka的消费者组(下)
上一文对消费者组的一些概念,基本原理进行了简单描述,本文继续来聊聊消费者组中另外一个比较重要的内容:偏移量的存储。
陈猿解码
2023/02/28
8020
kafka的消费者组(下)
Kafka 新版消费者 API(二):提交偏移量
最简单的提交方式是让消费者自动提交偏移量。如果 enable.auto.commit 被设为 true,那么每过 5s,消费者会自动把从 poll() 方法接收到的最大偏移量提交上去。提交时间间隔由 auto.commit.interval.ms 控制,默认值是5s。消费者每次获取新数据时都会先把上一次poll()方法返回的最大偏移量提交上去。
CoderJed
2018/09/13
5.7K1
Kafka消费者 之 如何提交消息的偏移量
由于消费者模块的知识涉及太多,所以决定先按模块来整理知识,最后再进行知识模块汇总。
create17
2019/07/12
3.8K0
Kafka消费者 之 如何提交消息的偏移量
kafka的消费者组(上)
最近在排查一个sparkstreaming在操作kafka时,rebalance触发了一个异常引起任务失败,而组内小伙伴对消费者组的一些基本知识不是很了解,所以抽了些时间进行相关原理的整理。本文就来聊聊相关内容。
陈猿解码
2023/02/28
9410
kafka的消费者组(上)
Kafka 3.0 重磅发布,有哪些值得关注的特性?
Apache Kafka 是一个分布式开源流平台,被广泛应用于各大互联网公司。Kafka 设计之初被用于消息队列,自 2011 年由 LinkedIn 开源以来,Kafka 迅速从消息队列演变为成熟的事件流处理平台。
大数据技术架构
2021/10/21
2K0
Kafka 3.0 重磅发布,有哪些值得关注的特性?
【kafka原理】消费者提交已消费的偏移量
那在上一篇文章中我们了解了 消费者偏移量__consumer_offsets_,知道了 消费者在消费了消息之后会把消费的offset 更新到以 名称为__consumer_offsets_的内置Topic中; 每个消费组都有维护一个当前消费组的offset; 那么就会有以下疑问
石臻臻的杂货铺[同名公众号]
2021/07/14
1.5K2
跨数据中心下的 Kafka 高可用架构分析
导语 本文介绍了 Kafka 跨数据中心的两种部署方式,简要分析两种方式下的不同架构以及优缺点,对这些架构可能碰到的问题也提供了一些解决思路;同时也说明了 Kafka 跨数据中心部署的社区解决方案和商业化解决方案。 背景 Kafka 作为世界上最流行的消息中间件之一,一般是客户数据链路中的核心组件,高可用性是客户很关注的因素。近期在对接云上客户时发现,客户对 Kafka 的高可用也有需求,行业架构师也想了解 Kafka 高可用的方案细节;有些客户是需要云上 Kafka 的高可用能力,有些客户需要 IDC
腾讯云中间件团队
2023/04/28
1.8K0
跨数据中心下的 Kafka 高可用架构分析
【kafka原理】 消费者偏移量__consumer_offsets_相关解析
我们在kafka的log文件中发现了还有很多以 __consumer_offsets_的文件夹;总共50个;
石臻臻的杂货铺[同名公众号]
2021/07/14
6.1K0
Kafka 为什么使用消费者组?
所有消费者一起消费所有的分区,例如 C1 和 C2 共同完成了对 P0、P1、P2、P3 的消费。
dys
2019/11/19
2K0
Kafka 为什么使用消费者组?
Kafka 3.0发布,这几个新特性非常值得关注!
Apache Kafka 是一个分布式开源流平台,被广泛应用于各大互联网公司。Kafka 设计之初被用于消息队列,自 2011 年由 LinkedIn 开源以来,Kafka 迅速从消息队列演变为成熟的事件流处理平台。
大数据老哥
2021/11/04
3.6K0
Kafka 3.0重磅发布,弃用 Java 8 的支持!
Kafka 具有四个核心 API,借助这些 API,Kafka 可以用于以下两大类应用:
Spark学习技巧
2022/01/13
2.3K0
Kafka 3.0重磅发布,弃用 Java 8 的支持!
Kafka 3.0重磅发布,都更新了些啥?
Kafka 设计之初被用于消息队列,自 2011 年由 LinkedIn 开源以来,Kafka 迅速从消息队列演变为成熟的事件流处理平台。
用户2781897
2021/10/14
2.2K0
面试系列-kafka偏移量提交
Kafka 中默认的消费位移的提交方式为自动提交,这个由消费者客户端参数 enable.auto.commit 配置,默认值为 true 。这个默认的自动提交不是每消费一条消息就提交一次,而是定期提交,这个定期的周期时间由客户端 auto.commit.interval.ms 配置,默认值为 5 秒,此参数生效的前提是 enable.auto.commit 参数为 true;
用户4283147
2022/12/29
1.1K0
面试系列-kafka偏移量提交
8.【kafka运维】kafka-dump-log.sh消费者组管理
配置项为log.index.size.max.bytes; 来控制创建索引的大小;
石臻臻的杂货铺[同名公众号]
2021/08/19
4640
7.【kafka运维】 kafka-consumer-groups.sh消费者组管理
先调用MetadataRequest拿到所有在线Broker列表 再给每个Broker发送ListGroupsRequest请求获取 消费者组数据
石臻臻的杂货铺[同名公众号]
2021/08/16
8.5K0
怎么理解Kafka消费者与消费组之间的关系?
与生产者对应的是消费者,应用程序可以通过 KafkaConsumer 来订阅主题,并从订阅的主题中拉取消息。不过在使用 KafkaConsumer 消费消息之前需要先了解消费者和消费组的概念,否则无法理解如何使用KafkaConsumer。
码农架构
2021/02/08
2.2K0
kafka消费者
当有多个应用程序都需要从Kafka获取消息时,让每个app对应一个消费者组,从而使每个应用程序都能获取一个或多个Topic的全部消息;在每个消费者组中,往消费者组中添加消费者来伸缩读取能力和处理能力,消费者组中的每个消费者只处理每个Topic的一部分的消息,每个消费者对应一个线程。
yiduwangkai
2022/01/20
9690
点击加载更多

相似问题

Kafka:描述消费者组偏移量

20

如何删除Kafka消费者组重置偏移量?

5253

删除未使用的kafka消费者组

23

KAFKA / AWS MSK,无法重置消费者组偏移量

11

为消费者组中未连接的kafka主题设置偏移量,而不停止消费者

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文