提问人:kyesia 提问时间:4/17/2023 更新时间:4/17/2023 访问量:33
调用 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 时无法使用其他应用的问题;
Problem of being unable to use other apps when calling intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
问:
在 GpsData 应用程序中,从服务器接收 GPS 数据。GPS 数据每秒由一个线程接收一次,InfoService 类将接收的 GPS 数据数发送到 MainActivity。在 MainActivity 中检查日志时,会调用 onPause() -> onNewIntent() -> onResume()。
但是,如果我按主页按钮使用其他应用程序,GpsData 应用程序将保持打开状态,无法使用其他应用程序。
GpsData 应用程序有没有办法继续接收 GPS 数据,同时允许用户通过按主页按钮使用其他应用程序?
代码>>
public class Client
{
public class SockHandler extends Handler
{
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case TCPClient.SOCKET_WRITTEN:
break;
case TCPClient.SOCKET_READ:
if (msg.arg1 <= 0)
break;
byte[] buf = (byte[])msg.obj;
String recv = new String(buf, 0, msg.arg1);
mRecvCount += msg.arg1;
mListener.setCount(String.format("%d", mRecvCount));
break;
case TCPClient.SOCKET_KEEP_ALIVE:
if (!isConnected()) break;`
...
break;
}
}
}
public interface Message
{
void setCount(String count);
}
}
public class InfoService extends Service implement Client.message {
........
@Override
public void setCount(String count) {
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
intent.putExtra("Count", count);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
public class MainActivity extends AppCompatActivity
{
@Override
protected void onResume() {
Log.i("MainActivity", "onResume CALL")
super.onResume();
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
protected void onPause() {
Log.i("MainActivity", "onPause CALL")
super.onPause();
}
public void setCount(String strCount) {
mRelayCountView.setText(strCount);
}
@Override
protected void onNewIntent(Intent intent) {
Log.i("MainActivity", "onNewIntent CALL")
........
if(intent.getStringExtra("Count")!=null) {
setCount(intent.getStringExtra("Count"));
}
.......
super.onNewIntent(intent);
}
}
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden|adjustPan"></activity>
我找不到解决方案。感谢您阅读这个问题。
答:
1赞
dominicoder
4/17/2023
#1
GpsData 应用程序有没有办法继续接收 GPS 数据,同时允许用户通过按主页按钮使用其他应用程序?
好吧,您每秒都会从服务启动活动(这似乎是操作系统甚至不应该允许的),所以不要这样做。
GPS 数据每秒由一个线程接收一次,InfoService 类将接收的 GPS 数据数发送到 MainActivity。
删除启动活动的代码,将值存储在共享首选项或数据库中,稍后从活动中读取它,并在用户打开活动以在活动运行时接收更新时从活动绑定到服务:https://developer.android.com/guide/components/bound-services
评论