我在启动活动时启动服务(或重新启动正在运行的服务),使用:
Intent intent = new Intent(this, MyService.class);
startService(intent);
稍后基于某些操作,相同的活动将使用绑定到服务
bindService(new Intent(this, MyService.class), mConnection, Context.BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)
当活动被破坏时,我打电话
unbindService(mConnection);
Run Code Online (Sandbox Code Playgroud)
早些时候,当我从应用程序托盘中杀死相同的活动/应用程序并在运行的应用程序下显示"消息1进程1服务正在运行"时,该服务用于重新启动.
现在,该服务不会在杀死相同的活动/应用程序时重新启动.
我收到消息"0进程1服务正在运行",这意味着该服务实际上没有运行.
应用程序关闭时,服务不会重新启动.我的申请包含一项活动.在系统引导后启动时,服务也会成功启动.
当我使用startService()启动它时,为什么服务进程会被杀死?
编辑
从应用程序托盘关闭应用程序后,该服务用于重新启动.但现在突然使用相同的代码,它没有.当我关闭它时,它也会与其他应用程序一起发生.例如.

我使用以下代码从手机中检索联系号码列表:
Cursor c = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
while(c.moveToNext()){
Log.d(TAG,"NO.: "+ c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER)));
}
Run Code Online (Sandbox Code Playgroud)
在API 16及更高版本中,这对我来说非常有用,因为我想要所有以E 164格式格式化的联系人,无论用户如何存储它们.
但是,对于16以下的API,上述代码将无法使用,我无法使用以下行获取所有联系人的E 164格式:
c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Run Code Online (Sandbox Code Playgroud)'PhoneNumberUtils'类无法使用.
另外,我不能使用libphonenumber库将数字转换为E 164格式,因为我不知道联系人的ISO 3166-1双字母国家代码.
有什么方法可以为Android中的每个联系人获取ISO 3166-1双字母国家/地区代码,以便我可以使用libphonenumber库?
或者是否有任何其他解决方案来实现第1点.
从手机检索的数字可以是任何格式,例如.
而E 164是+ 91XXXXXXXXXX,其中91是国家代码.
任何帮助将非常感激 !
我已经阅读了一些关于干净架构的文档和Android特定文档.
我完全喜欢为每个新功能创建一个单独的模块,但我关心的是如何组织我的数据层对象?因为我希望它们可以重复使用.
数据层是否应该是所有要素模块旁边的单独模块,还是数据层应该作为模块分解为组件?例如.网络,数据库等单独的模块?
我正在尝试使用ArrayAdapter创建一个微调器,我使用资源xml填充其值.
我还想给资源项一些"id"或"value".如何在onItemSelected()回调中检索这些值?
这是Java代码.
package com.waus.waus;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class Register extends Activity implements OnItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
Spinner countrySpinner = (Spinner) findViewById(R.id.country_code_spinner);
ArrayAdapter<CharSequence> countryAdapter = ArrayAdapter.createFromResource(this, R.array.country_codes, android.R.layout.simple_spinner_item);
countryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
countrySpinner.setOnItemSelectedListener(this);
countrySpinner.setAdapter(countryAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} …Run Code Online (Sandbox Code Playgroud) android android-arrayadapter android-spinner android-resources
android ×4