小编Jon*_*lis的帖子

Android:保持后台服务活着(防止进程死亡)

我有一个定义为的服务:

public class SleepAccelerometerService extends Service implements SensorEventListener
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我正在制作一个应用程序,可以在用户使用他或她的手机/设备睡在床上时,出于各种原因监控加速度计活动.这是一项长期服务,不得在夜间杀死.根据夜间有多少后台应用程序和定期进程,android有时会终止我的进程,从而结束我的服务.例:

10-04 03:27:41.673: INFO/ActivityManager(1269): Process com.androsz.electricsleep (pid 16223) has died.
10-04 03:27:41.681: INFO/WindowManager(1269): WIN DEATH: Window{45509f98 com.androsz.electricsleep/com.androsz.electricsleep.ui.SleepActivity paused=false}
Run Code Online (Sandbox Code Playgroud)

我不想强迫用户将"SleepActivity"或我的应用中的其他活动作为前景.我不能定期运行我的服务,因为它会不断拦截onSensorChanged.

有小费吗?源代码在这里:http://code.google.com/p/electricsleep/

service android process alarmmanager

51
推荐指数
4
解决办法
10万
查看次数

Android以编程方式包含布局(即没有XML)

所以我创建了一个名为CustomTitlebarActivity的Activity子类.基本上,我的应用程序中的每个主要活动都将有一个自定义标题栏,其中包含许多常用功能,如主页按钮,标题,搜索按钮等.在我当前的实现中,我仍然在布局XML中明确使用include语句每个CustomTitlebarActivity:

<include layout="@layout/titlebar" />
Run Code Online (Sandbox Code Playgroud)

我应该能够在CustomTitlebarActivity中执行此操作,这似乎很自然.我有两个问题:什么代码可以替换此包含标记,我应该在哪里放置代码?(我的第一直觉是将它放在CustomTitlebarActivity的setContentView方法中.)

在相关的说明中,我希望能够深入了解重用Android UI代码的更好方法(即使本身标题栏需要在活动之间略有不同.)

java android include

35
推荐指数
2
解决办法
5万
查看次数

Android - 通过引用其他定义的颜色来定义颜色

如果有一些方法可以colors.xml通过引用已经定义的另一种颜色来定义颜色,我一次又一次地想知道.好吧,我试了一下,确实,看起来你可以使用@ color/XXX引用其他颜色.

例如,一个colors.xml可能如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    …
    <color name="primary_blue">#205081</color>
    <color name="action_bar_text">@color/primary_blue</color>
    …
</resources>
Run Code Online (Sandbox Code Playgroud)

但我不希望其他人primary_blue直接使用我的定义 - 没有上下文制作蓝色的东西是没有意义的.我提出的最好的解决方案是将"直接"颜色加上前缀primary_blue,然后注释它们不应该直接使用.

有没有办法阻止使用这些直接颜色,同时仍然允许我的colors.xml文件引用它们?我想也许样式或apklib可以帮助我.

xml android colors android-resources

24
推荐指数
1
解决办法
4669
查看次数

无限的ViewPager

这似乎是可能的,但我在确定如何实现ViewPager无限期页面时遇到一些麻烦.

我的用例是一个日历,一次显示一个月,但可以通过分页足够的时间切换到任何月份.

目前我只是extending PagerAdapter,并且MonthViews添加了3个自定义,如下所示:

    @Override
    public Object instantiateItem(View collection, int position) {
        final MonthView mv = new MonthView(HistoryMonthActivity.this);
        mv.setLayoutParams(new ViewSwitcher.LayoutParams(
                android.view.ViewGroup.LayoutParams.MATCH_PARENT,
                android.view.ViewGroup.LayoutParams.MATCH_PARENT));
        mv.setSelectedTime(mTime);

        ((DirectionalViewPager) collection).addView(mv, 0);

        return mv;
    }
Run Code Online (Sandbox Code Playgroud)

我想一次只MonthView在内存中保存3 秒,这样MonthView当用户使用Tab键时,在每个数据库中显示数据都没有太大的延迟.因此,每次显示新页面时,我都需要删除一个MonthView并添加一个MonthView.如果有人对同样的功能有更好的想法,我很乐意听到它!

我正在考虑尝试使用FragmentStatePagerAdapter.

android infinite-scroll android-viewpager

19
推荐指数
2
解决办法
2万
查看次数

菜单排序由于片段和活动层次结构而产生的差异.(onCreateOptionsMenu)

背景

对于Android 3.0的发展,我有一个HostActivity是的超类NotebooksActivityNoteActivity.NotebooksActivity包括一个片段,NotebooksFragment.

HostActivity,我包含一个菜单,我想在ActionBar的选项菜单的最右端显示,即子类中的所有菜单项HostActivity应该出现在添加的菜单项的左侧HostActivity.

菜单膨胀HostActivity:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    final MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.host_menu, menu);
    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

问题

当我添加菜单项时NoteActivity,我按预期实现了所需的顺序:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.notebook_menu, menu);
    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我添加菜单项时NotebooksFragment,由于Fragments的工作方式,onCreateOptionsMenu在相同的方法之后调用HostActivity,导致HostActivity菜单项出现在之前NotebooksFragment.

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.notebooks_menu, …
Run Code Online (Sandbox Code Playgroud)

android menu android-fragments android-activity

10
推荐指数
1
解决办法
3203
查看次数

在iOS 8上共享NSURLCache和UIWebView

在iOS 7中,我能够将共享URL缓存设置为子类,NSURLCache并且UIWebView我创建的任何s都会自动为每个请求使用该共享缓存.

// Set the URL cache and leave it set permanently
ExampleURLCache *cache = [[ExampleURLCache alloc] init];
[NSURLCache setSharedURLCache:cache];
Run Code Online (Sandbox Code Playgroud)

但是,现在在iOS 8中,似乎UIWebView从共享缓存中拉出并且cachedResponseForRequest永远不会被调用.

有没有人找到这个变化的文档,或者解决方法?

uiwebview nsurlcache ios8

6
推荐指数
1
解决办法
3834
查看次数

C#:有效地搜索大字符串以查找其他字符串的出现

我正在使用C#在大字符串中连续搜索多个字符串"关键字",这些字符串大于等于4kb.这段代码不断循环,睡眠不会在保持合理速度的同时降低CPU使用率.bog-down是关键字匹配方法.

我发现了一些可能性,并且它们都具有相似的效率.

1)http://tomasp.net/articles/ahocorasick.aspx- 我没有足够的关键字,因此这是最有效的算法.

2)正则表达式.使用实例级别,编译正则表达式. - 提供比我要求的更多功能,效率不够.

3)String.IndexOf. - 我需要做一个"智能"版本,因为它提供了足够的效率.循环遍历每个关键字并调用IndexOf不会削减它.

有谁知道我可以用来实现我的目标的任何算法或方法?

c# string

5
推荐指数
1
解决办法
6644
查看次数

为什么在Honeycomb中引入API用于Gingerbread?

DatabaseUtils.concatenateWhere(...)文档中,声明它受API级别11+(HONEYCOMB)的支持.然而,在测试各种设备上的兼容性时,在我的Droid X上运行Cyanogenmod 7每晚构建98(基于姜饼2.3.5),方法调用不仅不会导致崩溃,而且按预期工作.

这与我的自定义ROM有些不一致,或者其他人是否可以在运行Gingerbread或更低版本的其他设备上重现此功能?这可能是SDK文档中的错误吗?

sdk compatibility android cyanogenmod android-3.0-honeycomb

4
推荐指数
1
解决办法
188
查看次数