当我正在研究各种移动平台的共性/差异时,正在研究的一个方面是内存管理.因此,我对各种机制的更详细的技术信息感兴趣.
具体来说,例如Android使用哪种垃圾收集器类型?
([Google Groups Discussion]建议它使用"跟踪"机制 - 但我很欣赏我可以引用的"更官方"来源,并希望在那里找到类型可能对程序员产生影响的信息.
我的问题还在于,Android 3.0(Honeycomb)中的GC是如何被专门调整以利用多个处理器的?
[Android Devevelopers Guide]建议
Android 3.0是该平台的第一个版本,旨在在单核或多核处理器架构上运行.Dalvik VM,Bionic库和其他地方的各种变化增加了对多核环境中对称多处理的支持.这些优化可以使所有应用程序受益,即使是那些单线程的应用程序.例如,如果Dalvik垃圾收集器在第二个核心上运行,则使用两个活动核心,单线程应用程序可能仍会看到性能提升.系统会自动安排."
和以前一样,我宁愿找到一个有更多技术信息的来源来阅读.同样,对开发人员的影响是什么(除了明显可以提高性能之外)?
任何此类输入都表示赞赏.
谢谢!
multithreading android garbage-collection android-3.0-honeycomb
我习惯使用适配器在android中构建列表.如果我需要一些长期获取的数据,我使用asynctask或简单的runnable来更新适配器所依赖的数据结构,并在适配器上调用notifyDataChanged.
虽然它并不简单,但我终于发现这是一个简单的模型,它允许逻辑表示(在asynctask中,更新数据结构)和视图(主要用作视图工厂的适配器)的良好分离.
不过,我最近读到了关于HoneyComb中引入的加载器并包含在向后兼容性支持库中,我尝试了它们并发现引入了很多复杂性.它们很难处理并通过装载程序管理器为整个过程添加某种魔力,添加大量代码并且不减少类或协作项目的数量,但我可能错了,并希望听到一些关于装载机.
好的,这是一个开发者论坛,所以这是一个例子.请用装载机做得更好:
package com.sof.test.loader;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.TextView;
/** The activity. */
public class LoaderTestActivity extends ListActivity {
private DataSourceOrDomainModel dataSourceOrDomainModel = new DataSourceOrDomainModel();
private List<Person> listPerson;
private PersonListAdapter personListAdapter;
private TextView emptyView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listPerson = new ArrayList<Person>();
personListAdapter = new PersonListAdapter( listPerson ); …
Run Code Online (Sandbox Code Playgroud) android list android-3.0-honeycomb android-4.0-ice-cream-sandwich
我Cursors
在我的应用程序中广泛使用,加载并偶尔从数据库写入信息.我已经看到Honeycomb和兼容包有新的Loader
类,旨在帮助以"良好"的方式加载数据.
从本质上讲,这些新类(特别是CursorLoader
)比以前的数据管理方法要好得多吗?例如,CursorLoader
过度管理有什么好处Cursors
?
我使用a ContentProvider
处理数据,这显然需要Uris
但是如何与initLoader()
方法相结合?我必须设置每个Fragments
人单独使用装载机吗?并且每个加载器的id需要多么独特,它是在我的应用程序范围内还是仅仅是一个片段?有没有简单的方法简单地传递Uri
给CursorLoader来查询我的数据?
我现在所能看到的是,Loaders添加了一个不必要的额外步骤来将我的数据导入我的应用程序,那么有人可以更好地向我解释它们吗?
我们有一个提供商,为HLS流提供m3u8文件(最初用于iOS应用程序).
Android 3.0+支持http直播(http://developer.android.com/guide/appendix/media-formats.html) - 我们实际上可以使用Android 3.0+上的标准VideoView播放这些m3u8文件.
编辑:Android似乎将此视为"实时"视频Feed,并禁用查找或计算视频时长的功能.(在iOS中,你可以在流中搜索而没有问题)
有没有办法迫使android 3.0+在这些文件中寻找?
以下是其他人要测试的示例活动:
import android.app.Activity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class SandboxActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
VideoView vw = (VideoView) findViewById(R.id.videoView);
vw.setVideoPath("http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8");
vw.setMediaController(new MediaController(this));
vw.requestFocus();
vw.start();
}
}
Run Code Online (Sandbox Code Playgroud)
和样本布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" android:id="@+id/root">
<VideoView
android:id="@+id/videoView"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这是使用Apple的示例HLS链接.
默认情况下,在Android 3.0+中,当调用ActionBar.hide()/ show()时,条形图会以简短的淡入/淡出动画进行动画处理.
此列表中似乎没有与动画资源关联的XML样式属性.
有没有办法改变这个动画?在我的情况下,我只是想改变动画时间,但是也可以有滑动动画吗?
android android-animation android-3.0-honeycomb android-actionbar
在我的应用程序中,我有一个名为"关于"的片段.在手持设备上我希望这个片段看起来像一个普通的活动,但在平板电脑上,我希望它是一个对话框.哪种方式更适合处理这种情况?
我的应用程序目前正在使用Fragments/v4兼容包来支持Android版本,一直到1.6.这意味着我的所有Fragment都继承自兼容包的版本Fragment
.我目前正在尝试重做部分应用程序以利用Honeycomb功能,例如ActionBar
.
我已经在3.0之前的设备上使用了我自己的动作栏实现,否则就使用了Honeycomb Action Bar.这个位不是问题.
我遇到的问题是尝试使用ActionBar实现标签.ActionBar.TabListener
期望本机Fragment
和FragmentTransaction
类工作 - 所以尝试使用我的Fragment类(继承自兼容性库)不会编译.
因此,没有任何人有任何想法如何,我可以用使用的兼容包版本碎片Fragment
与ActionBar
标签?
tldr:如何将ActionBar选项卡与从v4兼容性库继承的片段一起使用?
默认操作模式(3.0及更高版本)左侧带有绿色主题和"完成"按钮.我该如何定制这些?
谢谢
android android-3.0-honeycomb android-actionbar android-actionmode
我想和Honeycomb平板电脑上的GMail应用程序做同样的事情.单击"刷新"按钮时,图标将替换为ProgressBar.我怎样才能做到这一点?
谢谢
我可以通过这样的动作扩展搜索视图
<item android:id="@+id/menu_search"
android:title="Search"
android:showAsAction="never|collapseActionView"
android:actionViewClass="android.widget.SearchView" />
Run Code Online (Sandbox Code Playgroud)
但我有一个3-tab活动,我想SearchView总是扩展我该怎么办?
android android-3.0-honeycomb android-4.0-ice-cream-sandwich android-actionbar
android ×10
android-4.0-ice-cream-sandwich ×2
cursor ×1
fragment ×1
gmail ×1
list ×1
progress-bar ×1
tablet ×1
tabs ×1