我想在我的Java桌面应用程序上生成警报:
我正在使用Java,Eclipse,SWT进行开发,我的应用程序是使用Java Web Start从我的服务器部署的.我正在使用Mac OS X.6进行开发.
我想我有几个选择:
我真的不喜欢这个解决方案,我希望有更优雅的东西.
参考:我想在Mac OS/Windows上的System Startup上运行我的Java程序.我怎样才能做到这一点?
如果我将它作为系统服务运行,我可以从中受益,因为操作系统将确保我的软件:
我研究了一些我可以使用的资源:
我在系统服务选项中的问题是:
我的计划实施是否正确:
因此,在第一次运行时,应用程序将安装该服务并启动它.当应用程序关闭时,服务仍在运行,并且不再需要应用程序,除非它未注册.
但是,我想我仍然会错过"启动时运行"功能.
我对吗?我错过了什么吗?
在Unix上,我可以轻松使用cron表而无需应用程序将用户升级为root.我不需要处理重启,系统日期更改等.看起来不错.
在Windows上,我可以使用任务计划程序,即使在使用At或SchTasks的命令行中也是如此.这看起来不错,但是我需要这个兼容从XP到7,我不能轻易测试这个.
那你会怎么做?我错过了什么?您有什么建议可以帮助我选择最好,最优雅的解决方案吗?
我正在尝试制作一个具有分隔符的ActionBar微调器.我实现了一个SpinnerAdapter
有2个项目视图类型(感谢getViewTypeCount
).问题是我convertViews
从另一种类型发送了一些.
这是我的SpinnerAdapter:
public abstract class SeparatorSpinnerAdapter implements SpinnerAdapter {
Context mContext;
List<Object> mData;
int mSeparatorLayoutResId, mActionBarItemLayoutResId, mDropDownItemLayoutResId, mTextViewResId;
public static class SpinnerSeparator {
public int separatorTextResId;
public SpinnerSeparator(final int resId) {
separatorTextResId = resId;
}
}
public abstract String getText(int position);
public SeparatorSpinnerAdapter(final Context ctx, final List<Object> data, final int separatorLayoutResId, final int actionBarItemLayoutResId,
final int dropDownItemLayoutResId, final int textViewResId) {
mContext = ctx;
mData = data;
mSeparatorLayoutResId = separatorLayoutResId;
mActionBarItemLayoutResId = actionBarItemLayoutResId;
mDropDownItemLayoutResId …
Run Code Online (Sandbox Code Playgroud) 我正在编写代码以在特定时间向用户显示通知(就像Google日历应用一样).
我因此创造了:
BroadcastReceiver
听BOOT_COMPLETED
,在接收时它会在一分钟内发出警报,以便在设备仍然装载时不会使设备过载;BroadcastReceiver
听取警报:一分钟后的第一组BOOT_COMPLETED
,下一次约会的下一组(如Google日历中)所以,通常:
BOOT_COMPLETED
=>延迟一分钟发起警报这意味着状态栏通知是从BroadcastReceiver
.
我在文档中读到应该从活动或服务中启动它们:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Basics
我在这里要求最佳实践.我应该创建一个Service
将由它启动的BroadcastReceiver
,并且唯一的目的是启动状态栏通知吗?我的代码正在运行,我只想按照Google的建议创建干净的代码.
我希望将应用布局设置为他们用于Gmail的应用布局.他们有图标(我的设备上它拥有长达导航应用的标志,并选择优先收件箱/收件箱/等自定义视图),但也有某种分裂的动作条ActionBar
,因为在底部,我有几个图标(撰写,搜索,标签等).
我怎么能这样做?我ActionBar
通过这个XML 实现了以下内容:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_gps"
android:icon="@drawable/icone_gps_continu"
android:showAsAction="always"
android:title="@string/menu_gps"/>
<item
android:id="@+id/menu_sort"
android:icon="@drawable/icone_liste_chron"
android:showAsAction="always"
android:title="@string/menu_liste"/>
<item
android:id="@+id/menu_stats"
android:icon="@drawable/icone_statistiques"
android:showAsAction="always"
android:title="@string/menu_stats"/>
<item
android:id="@+id/menu_save"
android:icon="@drawable/icone_terminersortie"
android:showAsAction="always"
android:title="@string/menu_save"/>
<item
android:id="@+id/menu_search"
android:icon="@drawable/ic_launcher"
android:showAsAction="always"
android:title="@string/menu_search"/>
<item
android:id="@+id/menu_photo"
android:icon="@drawable/icone_enregistrerphoto"
android:showAsAction="always"
android:title="@string/menu_photo">
</item>
<item
android:id="@+id/menu_sound"
android:icon="@drawable/icone_enregistrerson"
android:showAsAction="always"
android:title="@string/menu_sound">
</item>
<item
android:id="@+id/menu_settings"
android:icon="@drawable/icone_parametres"
android:showAsAction="always"
android:title="@string/menu_settings">
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
我当然ActionBar
通过在清单中添加android:uiOptions="splitActionBarWhenNarrow"
我的<application>
标签来启用拆分.
我得到的是一个空洞的"顶部" ActionBar
; 而底部只显示三个图标.我认为我可以在portait模式中在顶部显示3-4个图标,在底部显示5个图标,并且所有这些图标在横向模式下显示在顶部.
注意:即使我使用Galaxy Nexus在ICS上进行测试,我也使用ActionBarSherlock来提供向后兼容性.
我正在尝试获得一个对我的sqlite数据库的多线程访问没有失败的模式.另外,让我疯狂的是我无法重现这个问题.
我有一个使用数据库的应用程序,还有Android帐户和Android同步来同步我的应用程序的数据.我的猜测是,当两者同时发生时,它会崩溃.我遇到了很多错误:
* android.database.sqlite.SQLiteDatabaseLockedException: database is locked
* android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5)
* android.database.sqlite.SQLiteDatabaseLockedException: error code 5: database is locked
* android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5): , while compiling: PRAGMA journal_mode
* android.database.sqlite.SQLiteDiskIOException: disk I/O error (code 778)
* android.database.sqlite.SQLiteException: Failed to change locale for db '/data/data/net.bicou.redmine/databases/redmine.db' to 'en_US'. \n Caused by: android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5)
Run Code Online (Sandbox Code Playgroud)
也许并非所有这些都与相同的根本原因有关,但我有点迷失.
我有的是:
DbAdapter
由想要管理单个表的子类扩展DbManager
包含一个Lock
现在,用户的版本DbManager
不是单例.我打算制作DbManager
一个单例,以便所有线程共享同一个对象.这不应该是一个问题,因为据我所知,后台同步和应用程序共享相同的过程.
这是课程(只有相关部分):
public abstract class DbAdapter …
Run Code Online (Sandbox Code Playgroud) 我的维度定义中有这两个项目:
<dimen name="toolbar_search_extended_height">158dp</dimen>
<dimen name="toolbar_search_normal_height">?attr/actionBarSize</dimen>
Run Code Online (Sandbox Code Playgroud)
现在我想在运行时以像素为单位获取实际值:
height = getResources().getDimensionPixelOffset(R.dimen.toolbar_search_extended_height);
height = getResources().getDimensionPixelOffset(R.dimen.toolbar_search_normal_height);
Run Code Online (Sandbox Code Playgroud)
第一个调用给出了设备上以像素为单位的任何 158dp。
第二次调用产生一个NotFoundException
:
android.content.res.Resources$NotFoundException: Resource ID #0x7f080032 type #0x2 is not valid
Run Code Online (Sandbox Code Playgroud)
类型0x2
是:TypedValue#TYPE_ATTRIBUTE
:
/** The <var>data</var> field holds an attribute resource
* identifier (referencing an attribute in the current theme
* style, not a resource entry). */
public static final int TYPE_ATTRIBUTE = 0x02;
Run Code Online (Sandbox Code Playgroud)
取消引用dimen
可以是实际值或对样式属性的引用的值的首选方法是什么?
在我的应用程序中跟踪严重内存问题的过程中,我查看了我的应用程序中的几个堆转储,并且大多数时候我有一个我不知道的巨大位图.
它需要9.4MB或9,830,400字节,或者实际上是每像素4字节的1280x1920图像.
我在Eclipse MAT中检查过它确实是一个字节[9830400],它有一个传入引用,它是一个android.graphics.Bitmap
.
我想把它转储到一个文件,并尝试看到它.我无法理解它的来源.我所有绘图中最大的形象是640x960 png,不到3MB.
我试图使用Eclipse"将值复制到文件",但我认为它只是将缓冲区打印到文件中,我不知道任何可以读取字节流并将其显示为每像素4个字节的图像软件图片.
任何的想法?
这是我尝试过的:将字节数组转储到文件中,将其推送到/ sdcard/img,然后加载如下活动:
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
final File inputFile = new File("/sdcard/img");
final FileInputStream isr = new FileInputStream(inputFile);
final Bitmap bmp = BitmapFactory.decodeStream(isr);
ImageView iv = new ImageView(this);
iv.setImageBitmap(bmp);
setContentView(iv);
Log.d("ImageTest", "Image was inflated");
} catch (final FileNotFoundException e) {
Log.d("ImageTest", "Image was not inflated");
}
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何东西.
你知道如何编码图像吗?说它存储在byte[] buffer
.buffer[0]
是红色,buffer[1]
是绿色等?
我的应用程序中存在严重的内存问题[1].为了研究这个问题,我在不同的州采取了我的应用程序的堆积.我看到一些位图占用了大量内存.我写了一个小工具[2],将字节数组解码为Windows位图文件(.bmp),这样我就可以看到位图并将它们与我res/drawable
文件夹中的文件进行比较.
我发现我的所有文件都被上采样两次.
我首先检查了最大的一个:堆中超过9MB的字节数组缓冲区,它被解码为一个漂亮的1920x1280图片,而原始的是一个960x640 png文件.
我尝试了第二大,超过3MB,曾经解码显示一个漂亮的754x1200图片,原始大小是......猜怎么着?一个不错的377x600 jpg文件.
是什么赋予了?
我在我的Android Manifest文件中启用了硬件加速(虽然我不确定我真的需要它,我只是使用一些基本的视图和活动).
我在GSM Galaxy Nexus(yakju)上运行Android 4.0.2.我收到测试人员的反馈,他们的4.0.3 Nexus S上存在问题,但我还是无法检查他们的堆转储.
我试图在这里节省内存,如果Android将所有内容加倍,难怪应用程序很快崩溃,因为堆使用率过高(在我的情况下大约为64MB).我希望有一个理由和方法.
参考文献:
我有一个在tomcat 6下运行的基于Spring的Web应用程序.现在,我想使用c3p0连接池而不是tomcat的默认DBCP.所以,从c3p0帮助文档中,我已经定义了context.xml
类似的数据源:
<Resource name="jdbc/sample" auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@someServer:1551:xyz"
username="userName"
password="pwd"
validationQuery="SELECT 1 FROM dual"
testOnBorrow="true"
testWhileIdle="true"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
maxPoolSize="20"
minPoolSize="5"
acquireIncrement="1"
/>
Run Code Online (Sandbox Code Playgroud)
现在,文档说,我应该包括以下内容web.xml
:
<resource-ref>
<res-ref-name>jdbc/sample</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Run Code Online (Sandbox Code Playgroud)
我还有以下内容applicationContext.xml
:
<jee:jndi-lookup id="sampleDataSource" resource-ref="true"
jndi-name="jdbc/sample" />
Run Code Online (Sandbox Code Playgroud)
当我启动tomcat时,我得到了
javax.naming.NameNotFoundException:名称jdbc未绑定在此Context中
没有c3p0并在tomcat6中使用默认连接池工作正常.
任何帮助,将不胜感激.
我已经实现了一个自定义操作栏布局AppCompat
:
public class DoneBarActivity {
public interface OnSaveActionListener {
public void onSave();
}
public static void setupActionBar(final ActionBarActivity activity,
final OnSaveActionListener listener) {
// Inflate a "Done/Cancel" custom action bar view.
final LayoutInflater inflater = (LayoutInflater) activity
.getSupportActionBar().getThemedContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View customActionBarView = inflater.inflate(
R.layout.actionbar_custom_view_done_cancel, null);
customActionBarView.findViewById(R.id.actionbar_done)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// "Done" (or "Save")
if (listener != null) {
listener.onSave();
}
activity.finish();
}
});
customActionBarView.findViewById(R.id.actionbar_cancel)
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View …
Run Code Online (Sandbox Code Playgroud)