当我正在研究各种移动平台的共性/差异时,正在研究的一个方面是内存管理.因此,我对各种机制的更详细的技术信息感兴趣.
具体来说,例如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
我正在尝试在我的项目中使用GSON,但是我的应用程序崩溃了,logcat说无法找到com.google.gson.Gson.我已经把进口com.google.gson.Gson我的类文件,我已经在GSON我的包管理器,并通过右键添加它 - >构建路径 - >添加库.它还显示在Project-> properties-> java build path-> libraries tab-> gson中.我做错了什么?
我的应用程序目前正在使用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兼容性库继承的片段一起使用?
我想自定义添加ActionView到我的ActionBar.
我想添加常用的刷新按钮.(ImageButton,ProgressBar在里面FrameLayout)但如果我使用的ActionView onOptionsItemSelected()是从未被调用过的.
这是代码:
在我的Activity:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.messages_actionbar, menu);
mRefreshView = (RefreshView) menu.findItem(R.id.messages_refresh).getActionView();
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
messages_actionbarsrc:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/messages_refresh"
android:title="title"
android:icon="@drawable/icon"
android:showAsAction="always"
android:actionViewClass="com.blabla.RefreshView"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
RefreshView的代码:
public class RefreshView extends FrameLayout {
private ImageView mButton;
private ProgressBar mProgressBar;
private boolean mLoading;
public RefreshView(Context context) {
super(context, null);
initView(context);
}
public RefreshView(Context context, …Run Code Online (Sandbox Code Playgroud) 我使用默认的"小部件预览"应用程序在Honeycomb模拟器中截取了我的应用程序小部件的屏幕截图,但我不知道图像保存在哪个位置.我一直在寻找使用adb shell命令以及查看Gallery应用程序,但我一直无法找到它.我可以通过电子邮件发送或发送彩信,但我想我不需要在模拟器上设置邮件帐户.
是否有一种简单的方法来获取我错过的图像,或者我是否真的需要在模拟器上设置邮件帐户?
提前致谢.
我有一个UI,我需要Fragment在横向模式下显示(带有视图),但不能在纵向模式下显示.在纵向模式下,它应该仍然可用,但会使用ListPopupWindow相反的方式显示其结果.
我想我可以通过使用<fragment />横向布局的标签来处理这个问题,同时如果它没有启动(在我们是肖像的情况下)以编程方式创建片段.
只要从横向开始,这种方法就可以正常工作,如果以纵向方式开始,以编程方式创建片段,当您尝试将片段附加到布局时旋转模拟器时,应用程序将崩溃:
java.lang.IllegalStateException:Fragment没有创建视图.在android.app.Activity.onCreateView(Activity.java:4095)
这些文档Fragment.isInLayout()似乎暗示它应该能够以这种方式处理它:
如果布局通过标记包含在活动视图层次结构中,则返回true.当通过标记创建片段时,这将始终为真,除非旧片段从先前状态恢复且未出现在当前状态的布局中.
所以问题是如何正确地做到这一点,或者是否有我遗漏的东西?
更新:
似乎不像isInLayout()现在这样表现.如果已Fragment手动将a 添加到容器,则返回false .
此外,如果您Fragment手动添加到容器,然后将(设备)旋转到不包含该布局的布局,它将崩溃:
引起:java.lang.IllegalArgumentException:在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:722)中找不到片段SearchFragment {4042f868#2 id = 0x7f060011 SearchFragment}的id 0x7f060011的视图
我准备我的应用程序与蜂窝平稳工作.关于android主题,我有一个小美学问题.
对于蜂窝,建议使用以下主题.
android:theme="@android:style/Theme.Holo.Light"
Run Code Online (Sandbox Code Playgroud)
如何在以前的版本中使用其他主题时,如何让我的应用程序使用?
提前致谢
我有几个自定义DialogPreference实现,例如这个:
package apt.tutorial;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.TimePicker;
public class TimePreference extends DialogPreference {
private int lastHour=0;
private int lastMinute=0;
private TimePicker picker=null;
public static int getHour(String time) {
String[] pieces=time.split(":");
return(Integer.parseInt(pieces[0]));
}
public static int getMinute(String time) {
String[] pieces=time.split(":");
return(Integer.parseInt(pieces[1]));
}
public TimePreference(Context ctxt) {
this(ctxt, null);
}
public TimePreference(Context ctxt, AttributeSet attrs) {
this(ctxt, attrs, 0); …Run Code Online (Sandbox Code Playgroud) 我为银行开发了一个巨大的应用程序.该应用程序使用户能够通过电话执行大量操作(国内和国际转移,证券,股票市场价值,警报,存款,卡更改,卡激活,支票等).
所有应用程序都运行Android本机代码,每个屏幕都是一个Activity.
现在我们正在转向Fragments ......基于这些教程,我可以继续这样做 ......我甚至已经优化了它们的流程.
但是,根据他们的建议,我将不得不创建大约100个新的Fragment类; 切换我在每个屏幕活动上的代码,并将其放在新的每个屏幕片段类中; 更新大约100个布局; 最后更新屏幕触发新屏幕的方式(使用FragmentManager而不是Intents).
也许并不困难,但繁琐乏味.
我的问题是,有人知道将100个活动应用程序移植到Fragments的快速方法比提到的教程更快吗?
谢谢
port android android-fragments android-3.0-honeycomb android-activity
我有一个Xoom平板电脑,如果我可以使用R进行统计分析,那就太棒了.据我所知,由于许可证问题(GPl x iTunes等)以及苹果平板电脑中缺少Fortran编译器,因此无法在iPad上使用R.
但是使用Android的平板电脑怎么样?可以说,GPL问题不是问题,所以有关如何在平板电脑上使用R的任何帮助吗?