在Android开发中是否有一种方法可以在应用程序的后台运行进程,即使应用程序未处于活动状态.例如,如果用户启动进程,然后点击"主页"按钮,我希望该进程继续在后台运行.
我正在创建一个应用程序,即使应用程序没有运行,也需要每分钟更新一次值.
当然,我已经设置了一个简单的Service方法.我设置了调试消息,告诉我何时Service启动,何时更新(每分钟)以及何时关闭.我还有一条消息告诉我何时在runOnUiThread()方法内更新值.我的所有消息都被激活,除了那个消息runOnUiThread().有什么我做错了(当然有)?我需要改变什么?
码:
@Override
public void handleMessage(Message message) {
try {
if (!serviceStarted) {
serviceStarted = true;
serviceTest = true;
while (serviceStarted) {
new MainActivity().runOnUiThread(new Runnable() {
public void run() {
OverviewFragment.refresh(getApplicationContext());
System.out.println("yay");
}
});
Thread.sleep(((1 /* minutes */) * 60 * 1000));
System.out.println("Updated values through service.");
}
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace();
}
stopSelf(message.arg1);
}
Run Code Online (Sandbox Code Playgroud) 我正在制作一个使用首选项作为设置菜单的应用程序。我有菜单中不同对象的代码,但分隔线是浅白色的。我想将其设置为较深的颜色(例如黑色),以便更容易看到。我当前的代码如下:
首选项.xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="Appearance" />
<ListPreference
android:key="color_scheme"
android:title="Color Scheme"
android:summary="Change the color scheme of the app"
android:dialogTitle="Color Scheme"
android:entries="@array/colors"
android:entryValues="@array/colors"
android:defaultValue="Default (Blue Gray)" />
<PreferenceCategory
android:title="Other" />
<Preference
android:key="@string/preference_reset"
android:title="Reset Values"
android:summary="Reset all values to their default value" />
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
样式.xml:
<style name="PreferenceStyle">
<item name="android:textColorPrimary">@color/text_color_dark</item>
<item name="android:textColorSecondary">@color/text_color_gray</item>
<item name="android:listSeparatorTextViewStyle">@style/ListSeperatorColor</item>
</style>
<style name="ListSeperatorColor" parent="android:Widget.TextView">
<item name="android:background">@color/text_color_dark</item>
</style>
Run Code Online (Sandbox Code Playgroud)
最后:
setTheme(R.style.PreferenceStyle);
Run Code Online (Sandbox Code Playgroud) 我正在制作一个充当手电筒的简单应用程序.我需要能够使用Camera2 API从应用程序中的按钮打开和关闭闪存,因为我使用旧的相机API出错了.我想使用"手电筒"手电筒,相机无需打开即可开启闪光灯.我知道这是可能的,因为很多手机在快速设置菜单中都有闪光灯开/关,但我找不到任何关于如何操作的代码或教程.
码:
Camera cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
Run Code Online (Sandbox Code Playgroud)
我在使用Android 6.0.1的Nexus 6P上运行.
编辑:我需要使用Camera2 API.我还没有找到一个很好的教程,在得到答案之后,我将在这里创建一个Q/A格式.
我正在创建一个包含带有嵌套CardView的RecyclerView的Android应用程序.我需要将每张其他卡换成不同的颜色.我@Override用来覆盖这个onBindViewHolder(ViewHolder vh, int pos)方法.我需要更改该方法的背景颜色(我假设),但没有方法来设置ViewHolder的背景颜色!
对不起我的诺言,我正在学习Android开发.
-ben
编辑:代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_9);
pieRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
pieRecyclerView.setHasFixedSize(true);
pies = makePies();
pieLayoutManager = new LinearLayoutManager(this);
pieRecyclerView.setLayoutManager(pieLayoutManager);
PieAdapter adapter = new PieAdapter(pies);
pieRecyclerView.setAdapter(adapter);
}
public class PieAdapter extends RecyclerView.Adapter<ViewHolder> {
Context mContext;
ArrayList<Pie> mPies;
LayoutInflater mInflater;
public PieAdapter(ArrayList<Pie> pies) {
mPies = pies;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.card_layout, parent, false);
return new ViewHolder(v);
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我正在制作一个获取 Wi-Fi 和移动数据信息的应用程序。应用程序的 Wi-Fi 部分工作正常,但我似乎无法让数据部分工作。我在三星手机上听说过这样的问题(我正在测试一个),我需要一个不超过我的 API 级别 15 的解决方法。
这是我当前的代码:
class myPhoneStateListener extends PhoneStateListener {
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
if (signalStrength.isGsm()) {
mobileStrength = signalStrength.getGsmSignalStrength();
mobileStrength = (2 * mobileStrength) - 113;
} else {
mobileStrength = signalStrength.getCdmaDbm();
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它返回null。